如题
印象和 notion 过来的报个到!
笔记的创建时间对我而言是很重要的因素,有什么办法可以修改吗?
这两天从大象和 notion 倒过来大量笔记,创建时间都是这两天的。让我很纠结,茶饭不思!
如我大象的笔记,时间也代表了一种笔记,请问各路大神有没有办法修改啊,在线等,挺急的!!!
如题
印象和 notion 过来的报个到!
笔记的创建时间对我而言是很重要的因素,有什么办法可以修改吗?
这两天从大象和 notion 倒过来大量笔记,创建时间都是这两天的。让我很纠结,茶饭不思!
如我大象的笔记,时间也代表了一种笔记,请问各路大神有没有办法修改啊,在线等,挺急的!!!
改倒是能改,但你得自己会写脚本,或者请其他懂的人写脚本(目测文档名上就包含了时间,所以应该不难写,只不过我不会写 )。
实际上文档的 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
Vim 是类 UNIX 系统文本编辑器 Vi 的加强版本,加入了更多特性来帮助编辑源代码。Vim 的部分增强功能包括文件比较(vimdiff)、语法高亮、全面的帮助系统、本地脚本(Vimscript)和便于选择的可视化模式。
星云链是一个开源公链,业内简单的将其称为区块链上的谷歌。其实它不仅仅是区块链搜索引擎,一个公链的所有功能,它基本都有,比如你可以用它来开发部署你的去中心化的 APP,你可以在上面编写智能合约,发送交易等等。3 分钟快速接入星云链 (NAS) 测试网
CAP 指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可兼得。
Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。
Ngui 是一个 GUI 的排版显示引擎和跨平台的 GUI 应用程序开发框架,基于
Node.js / OpenGL。目标是在此基础上开发 GUI 应用程序可拥有开发 WEB 应用般简单与速度同时兼顾 Native 应用程序的性能与体验。
MongoDB(来自于英文单词“Humongous”,中文含义为“庞大”)是一个基于分布式文件存储的数据库,由 C++ 语言编写。旨在为应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似 JSON 的 BSON 格式,因此可以存储比较复杂的数据类型。
C 语言是一门通用计算机编程语言,应用广泛。C 语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
Web Clipper 是一款浏览器剪藏扩展,它可以帮助你把网页内容剪藏到本地。
我们平时所说的“架构”主要是指软件架构,这是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。另外还有“业务架构”、“网络架构”、“硬件架构”等细分领域。
Bug 本意是指臭虫、缺陷、损坏、犯贫、窃听器、小虫等。现在人们把在程序中一些缺陷或问题统称为 bug(漏洞)。
一种软件架构设计风格而不是标准,提供了一组设计原则和约束条件,主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。
jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 jQuery 的操作方法来取出和操作数据。
ZeroNet 是一个基于比特币加密技术和 BT 网络技术的去中心化的、开放开源的网络和交流系统。
你若安好,便是晴天。
Laravel 是一套简洁、优雅的 PHP Web 开发框架。它采用 MVC 设计,是一款崇尚开发效率的全栈框架。
京东是中国最大的自营式电商企业,2015 年第一季度在中国自营式 B2C 电商市场的占有率为 56.3%。2014 年 5 月,京东在美国纳斯达克证券交易所正式挂牌上市(股票代码:JD),是中国第一个成功赴美上市的大型综合型电商平台,与腾讯、百度等中国互联网巨头共同跻身全球前十大互联网公司排行榜。
持续集成(Continuous Integration)是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。
IBM(国际商业机器公司)或万国商业机器公司,简称 IBM(International Business Machines Corporation),总公司在纽约州阿蒙克市。1911 年托马斯·沃森创立于美国,是全球最大的信息技术和业务解决方案公司,拥有全球雇员 30 多万人,业务遍及 160 多个国家和地区。
愿逝者安息!
支付宝是全球领先的独立第三方支付平台,致力于为广大用户提供安全快速的电子支付/网上支付/安全支付/手机支付体验,及转账收款/水电煤缴费/信用卡还款/AA 收款等生活服务应用。
Open Source, Open Mind, Open Sight, Open Future!
App(应用程序,Application 的缩写)一般指手机软件。
以太坊(Ethereum)并不是一个机构,而是一款能够在区块链上实现智能合约、开源的底层系统。以太坊是一个平台和一种编程语言 Solidity,使开发人员能够建立和发布下一代去中心化应用。 以太坊可以用来编程、分散、担保和交易任何事物:投票、域名、金融交易所、众筹、公司管理、合同和知识产权等等。
Sublime Text 是一款可以用来写代码、写文章的文本编辑器。支持代码高亮、自动完成,还支持通过插件进行扩展。
Cloud Foundry 是 VMware 推出的业界第一个开源 PaaS 云平台,它支持多种框架、语言、运行时环境、云平台及应用服务,使开发人员能够在几秒钟内进行应用程序的部署和扩展,无需担心任何基础架构的问题。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于