如题
印象和 notion 过来的报个到!
笔记的创建时间对我而言是很重要的因素,有什么办法可以修改吗?
这两天从大象和 notion 倒过来大量笔记,创建时间都是这两天的。让我很纠结,茶饭不思!
如我大象的笔记,时间也代表了一种笔记,请问各路大神有没有办法修改啊,在线等,挺急的!!!
如题
印象和 notion 过来的报个到!
笔记的创建时间对我而言是很重要的因素,有什么办法可以修改吗?
这两天从大象和 notion 倒过来大量笔记,创建时间都是这两天的。让我很纠结,茶饭不思!
如我大象的笔记,时间也代表了一种笔记,请问各路大神有没有办法修改啊,在线等,挺急的!!!
估计得自己改数据库里面的创建时间字段,可以问一下 D 大能不能在笔记本内部新增个改创建时间的功能。
改倒是能改,但你得自己会写脚本,或者请其他懂的人写脚本(目测文档名上就包含了时间,所以应该不难写,只不过我不会写 )。
实际上文档的 ID 跟创建时间有关,改了 ID 也就改了创建的时间,可以在.sy 文件里根据文档名上的时间来批量替换文档 ID(包括这个.sy 文件的文件名,如果有子文档的话还包括同名的文件夹名称):
感谢各路大神回复啊,我写了个脚本可以批量修改创建时间,如果需要可以交流使用:)
改完要确实要重建索引:)
```python import os import json import re def process_files(directory_path): mapping_array = [] # 遍历 SiYuan/data 目录下所有 .sy 结尾的文件 for root, dirs, files in os.walk(directory_path): for file in files: if file.endswith(".sy"): file_path = os.path.join(root, file) # 提取文件名中的时间和唯一码 match = re.match(r'(\d+)-(\w+)\.sy', file) if match: create_time, file_key = match.groups() else: continue # 读取 JSON 文件内容,根据这个title你可以确定笔记创建时间(从其他笔记应用导过来) with open(file_path, 'r', encoding='utf-8') as json_file: data = json.load(json_file) title_content = data.get("Properties", {}).get("title", "") # 生成映射数组 mapping = { 'key': file_key, 'title': title_content, 'real_create_time': '', 'filePath': file_path } mapping_array.append(mapping) # 将映射数组保存到 mappings.txt 文件中 with open('mappings.txt', 'w', encoding='utf-8') as mappings_file: json.dump(mapping_array, mappings_file, ensure_ascii=False, indent=2)
# 替换你思源本地数据绝对路径
directory_path = '/Users/yourdir/SiyuanTestCanDelete/data'
process_files(directory_path)
import json
import re
import os
def replace_time_in_files(mapping_array):
for mapping in mapping_array:
# 只有当 real_create_time 不为空时才执行替换操作
if mapping['real_create_time']:
old_file_path = mapping['filePath']
# 读取旧文件内容
with open(old_file_path, 'r', encoding='utf-8') as old_file:
file_content = old_file.read()
# 替换文件内容中的时间戳
new_file_content = re.sub(
r'(?<="ID":")(\d{14})|(?<="id":")(\d{14})|(?<="updated":")(\d{14})',
mapping['real_create_time'],
file_content
)
# 构造新文件名
old_dir, old_file_name = os.path.split(old_file_path)
new_file_name = mapping['real_create_time']+'-'+mapping['key']+'.sy'
new_file_name = os.path.join(old_dir, new_file_name)
# print(old_dir,old_file_path,new_file_name,new_file_content,sep='\r\n\r\n')
# 写入新文件
with open(new_file_name, 'w', encoding='utf-8') as new_file:
new_file.write(new_file_content)
# 删除旧文件 此处先保留以备恢复
# os.remove(old_file_path)
# 读取映射数组
with open('mappings.txt', 'r', encoding='utf-8') as mappings_file:
mappings = json.load(mappings_file)
# 第三步:替换文件名和文件内容中的时间
replace_time_in_files(mappings)
非常感谢 @klwb 大佬提供的代码和思路!
我是有大量笔记(1500+)要从印象笔记迁移过来,发现手动添加日期不现实,但是我使用的工具 evernote2md 导出的 md 文件属性里的日期本来就是正确的。于是我稍微修改了大佬的代码,添加了根据 title 寻找对应文件名 md 文件并获得日期的功能,目前来看我的笔记都成功修改为正确时间了。
再次提醒一下各位,我的思源笔记里都是迁移过来的内容,所以执行的时候并不担心数据丢失问题,大家在使用下面代码的时候最好还是做好数据备份或者注释掉删除旧笔记的代码。
代码字数刚好超过限制了,传到了 GitHub Gist: date_change.py
对的,大量笔记的话就要自动化了,印象导出的文件 enex 是 xml 格式里面有所有笔记的 index,后面我也写了个方法,自动索引对应
import xml.etree.ElementTree as ET def parse_xml_iterative(xml_file): notes_data = [] context = ET.iterparse(xml_file, events=('start', 'end')) context = iter(context) event, root = next(context) # 获取根节点 for event, elem in context: if event == 'end' and elem.tag == 'note': title = elem.find('./title').text created = elem.find('./created').text updated = elem.find('./updated').text notes_data.append({ 'title': title, 'created': created.replace('T','').replace('Z',''), 'updated': updated.replace('T','').replace('Z','') }) root.clear() # 清除已处理的元素,减少内存占用 return notes_data
Facebook 是一个联系朋友的社交工具。大家可以通过它和朋友、同事、同学以及周围的人保持互动交流,分享无限上传的图片,发布链接和视频,更可以增进对朋友的了解。
大数据(big data)是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。
微服务架构是一种架构模式,它提倡将单一应用划分成一组小的服务。服务之间互相协调,互相配合,为用户提供最终价值。每个服务运行在独立的进程中。服务于服务之间才用轻量级的通信机制互相沟通。每个服务都围绕着具体业务构建,能够被独立的部署。
Wide 是一款基于 Web 的 Go 语言 IDE。通过浏览器就可以进行 Go 开发,并有代码自动完成、查看表达式、编译反馈、Lint、实时结果输出等功能。
欢迎访问我们运维的实例: https://wide.b3log.org
微软是一家美国跨国科技公司,也是世界 PC 软件开发的先导,由比尔·盖茨与保罗·艾伦创办于 1975 年,公司总部设立在华盛顿州的雷德蒙德(Redmond,邻近西雅图)。以研发、制造、授权和提供广泛的电脑软件服务业务为主。
PHP(Hypertext Preprocessor)是一种开源脚本语言。语法吸收了 C 语言、 Java 和 Perl 的特点,主要适用于 Web 开发领域,据说是世界上最好的编程语言。
宕机,多指一些网站、游戏、网络应用等服务器一种区别于正常运行的状态,也叫“Down 机”、“当机”或“死机”。宕机状态不仅仅是指服务器“挂掉了”、“死机了”状态,也包括服务器假死、停用、关闭等一些原因而导致出现的不能够正常运行的状态。
生活是指人类生存过程中的各项活动的总和,范畴较广,一般指为幸福的意义而存在。生活实际上是对人生的一种诠释。生活包括人类在社会中与自己息息相关的日常活动和心理影射。
CSS(Cascading Style Sheet)“层叠样式表”是用于控制网页样式并允许将样式信息与网页内容分离的一种标记性语言。
前端技术一般分为前端设计和前端开发,前端设计可以理解为网站的视觉设计,前端开发则是网站的前台代码实现,包括 HTML、CSS 以及 JavaScript 等。
为成为自由职业者在家办公而努力吧!
flomo 是新一代 「卡片笔记」 ,专注在碎片化时代,促进你的记录,帮你积累更多知识资产。
DevOps(Development 和 Operations 的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。
我们平时所说的“架构”主要是指软件架构,这是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。另外还有“业务架构”、“网络架构”、“硬件架构”等细分领域。
发布对别人有帮助的原创内容是最好的 SEO 方式。
H2 是一个开源的嵌入式数据库引擎,采用 Java 语言编写,不受平台的限制,同时 H2 提供了一个十分方便的 web 控制台用于操作和管理数据库内容。H2 还提供兼容模式,可以兼容一些主流的数据库,因此采用 H2 作为开发期的数据库非常方便。
MongoDB(来自于英文单词“Humongous”,中文含义为“庞大”)是一个基于分布式文件存储的数据库,由 C++ 语言编写。旨在为应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似 JSON 的 BSON 格式,因此可以存储比较复杂的数据类型。
思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。
融合块、大纲和双向链接,重构你的思维。
Mobi.css is a lightweight, flexible CSS framework that focus on mobile.
Telegram 是一个非盈利性、基于云端的即时消息服务。它提供了支持各大操作系统平台的开源的客户端,也提供了很多强大的 APIs 给开发者创建自己的客户端和机器人。
ZeroNet 是一个基于比特币加密技术和 BT 网络技术的去中心化的、开放开源的网络和交流系统。
Go 语言是 Google 推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发 Go,是因为过去 10 多年间软件开发的难度令人沮丧。Go 是谷歌 2009 发布的第二款编程语言。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于