思源笔记更改笔记创建时间

2024-09-12 更新

  • 推荐使用 python 脚本,对于其他导入的 md,会能够自动正则匹配第一个日期,作为创建时间。比如 front matter 中的 data: 2012-12-12 12:12:32

  • 支持格式:

    1. 2012-12-12 12:12:32
    2. 2012-12-12,日期 + 导入时间
    3. 自己输入时间
  • 优化一个问题:

    • 当一个文档有下层文件夹时,还需要将文件夹的名称也进行替换。

前言

因为有的笔记是以前别的,但是导入思源后,笔记的创建时间是按照导入时间算的,所以如果需要 hugo 等需要时间情景的时候,就不准确了。

工具:quicker (工具箱,用来做可视化脚本很方便)

动作:https://getquicker.net/Sharedaction?code=d0c0c66d-e955-4bf2-de93-08dc5fed4e6b

原理:

1. 修改笔记文件名,因为文件名带有时间戳;
2. 修改文件文件内部的nodedocument名称,因为其也带有时间戳;
3. 重建索引,必须的,但是不必改一个就重建一下,可以多改几个之后再重建也行。

python 脚本

传参方式:

  1. 直接运行,输入路径的时候将笔记文件拖过来会自动输入,
  2. 输入日期,格式:20240101,然后重建索引即可。

该脚本用来修改之前的 hexo 博客的文档,因为 front-matter 中带有日期,所以不用输入,如果需要输入的,需要修改其中的代码片段。

import re
import os
import json

file_list_str = input("请输入文件列表,用逗号隔开:")
file_list = file_list_str.split(',')

for file_path in file_list:
    file_path = file_path.strip()
    try:
        # 获取文件名
        file_name = os.path.basename(file_path)
        oldtime = file_name[:14]
        with open(file_path, 'r', encoding='utf-8') as f:
            content = f.read()
            match = re.search(r'(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2})', content)
            # 获取当前的笔记名称
            content_dict = json.loads(content)
            print("当前文件:"+content_dict["Properties"]["title"])
            if match:
                date_str = match.group(1)
                numbers = re.findall(r'\d', date_str)
                newtime = "".join(numbers)
            else:
                new_match = re.search(r'(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})', content)
                if new_match:
                    date_str = new_match.group(1)
                    numbers = re.findall(r'\d', date_str)
                    newtime = "".join(numbers)
                else:
                    new_match = re.search(r'(\d{4}-\d{2}-\d{2})', content)
                    if new_match:
                        date_str = new_match.group(1)
                        newtime = date_str.replace('-', '') + oldtime[-6:]
                    else:
                        # 如果还找不到就只能自己输入时间了
                        print(f"找不到时间,文件定位:{file_name}")
                        s = input("请输入时间:20121245或2012-12-12:") or "20211106"
                        numbers = re.findall(r'\d', s)
                        newtime = "".join(numbers)
                        newtime=newtime+oldtime[-6:]
                        print("你自己输入的new为:"+newtime)
                        # continue
            oldtime_short = oldtime[:8]
            oldtime_escaped = re.escape(oldtime)
            newtime_escaped = re.escape(newtime)
            print("旧时间:"+oldtime_escaped+"\t新时间:"+newtime_escaped)
            new_content = re.sub(oldtime_escaped, newtime_escaped, content)
            # 替换文件名中的 oldtime 为 newtime
            new_file_name = file_name.replace(oldtime, newtime)
            with open(file_path, 'w', encoding='utf-8') as f_out:
                f_out.write(new_content)
        # 替换文件名称
        os.rename(file_path, file_path.replace(oldtime, newtime))
        # 同时查看是否有同名的文件夹,也进行替换
        old_folder_dir=file_path.split('.')[0]
        if os.path.exists(old_folder_dir):
            parts=old_folder_dir.split('\\')
            parts[-1] = parts[-1].replace(oldtime_escaped, newtime_escaped)
            new_folder_dir='\\'.join(parts)
            print(f"存在文件夹,进行替换:{old_folder_dir}→{new_folder_dir}")
            os.rename(old_folder_dir,new_folder_dir)
    except FileNotFoundError:
        print(f"文件 {file_path} 不存在。")

手搓单个

如果只是改一个的话,可以用以下脚本即可。

  1. 思源笔记1打开文件位置
    image

  2. 文件名就是时间戳,需要修改文件名
    image

  3. 点击打开这个 sy 文件,里面去把所有的该时间文件名替换成修改后的就行了。

  4. 重建索引


  1. 思源笔记

    样式设置

    1. logseq[^2]的引用样式:
    2. siyuan-logseq 双链引用 css[^3]
    3. sy_query 挂件[^5]
    4. 思源 api 配置[^6]
    5. 思源笔记更改笔记创建时间[^7]
    6. 思源自定义字体[^8]
  • Quicker

    Quicker 您的指尖工具箱!操作更少,收获更多!

    34 引用 • 148 回帖 • 1 关注
  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    23019 引用 • 92592 回帖
  • 效率
    12 引用 • 102 回帖
2 操作
tianzhongs 在 2024-09-12 16:14:26 更新了该帖
tianzhongs 在 2024-09-12 11:15:00 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...