群晖 NoteStation 批量倒入到思源笔记
笔者以前有一台群晖 NAS,在 NoteStation 中记录了很多笔记,后来换了极空间 NAS,新的 NAS 上自然没有 NoteStation 等笔记类软件,于是乎,我决定重新找一款自己喜欢的笔记软件,在经过一番尝试后,我觉得思源笔记最符合我的心意,所见即所得的 md 编辑器,本地化数据,多端同步特性,都深深地打动了我。那么剩下摆在面前的问题就是,如何将群晖 NoteStation 上的笔记批量导入思源笔记了。
经过一番搜索,发现有人做过 NoteStation 转 md 的脚本(https://github.com/Maboroshy/Note-Station-to-markdown)。但是,测试后发现他倒出来的 md 文件导入思源笔记后,出现附件丢失等问题。因为思源笔记的 md 格式有一些自己独有的格式和附件保存语法,不得不对转换脚本进行一些改造,以适应思源笔记的格式。于是就有了这篇文章,供有需要的同学使用。
Step 1,从群晖 NoteStation 导出 nsx 文件
注意,必须从 DSM Web 端中打开 NoteStation 程序,然后导出为 nsx 文件,比方说叫 NoteStationExport.nsx。
不可以在 windows NoteStation 客户端中导出,貌似会导不全。
Step 2,安装 python
版本太高了反而不能运行,这里推荐 3.10 版本。
- 可以从官网下载 python 3.10 的安装包(https://www.python.org/ftp/python/3.10.11/python-3.10.11-amd64.exe);
- 如果国内访问受限,也可以直接下载这个我下好的安装包:python-3.10.11-amd64.exe
有一点要注意,在安装时,要把“Add Python 3.10 to PATH”这个勾给勾上,方便以后使用 python。
Step 3,运行转换脚本
下载脚本:转换脚本,解压到任意文件夹中。
运行 cmd 命令行,并 cd 到上面解压的文件夹中。
运行 python nsx2md.py NoteStationExport.nsx
对 python 不熟的同学,我可以解释下上面这一行的意思:
- 第一个 python 代表的是 python.exe 可执行程序,因为你在安装 python 时,勾选了将 python 添加到默认路径中,所以就不需要输入 python 的全路径了;
- 第二个 nsx2md.py 是转换脚本,也就是被我改良过的脚本,可以兼容思源 md 格式;
- 第三个 NoteStationExport.nsx 是从群晖 NoteStation 导出的文件;
执行完上面的脚本,顺利的话,你应该在转换脚本当前目录下看到一堆的以你笔记本命名的文件夹,还有一个 assets 文件夹!将所有的笔记本文件夹都移动到一个临时文件夹中,以备下面的 Step 4 使用。
Step 4,将 md 文件导入思源笔记中
首先在思源笔记中建立一个笔记本,然后右键该笔记本,选择:导入 -> Markdown 文件夹。选择上面 Step 3 中的临时文件夹。
如果一切顺利的话,笔记的文本就被导入成功了,会看到所有笔记都以 文档-子文档 的形式嵌套下来的。
执行完导入还不算完,还记得 Step 3 中还生成了一个 assets 文件夹吗?这里面保存了所有笔记的附件!将 assets 中的所有附件(可能是图片、视频、pdf……)都拷贝到思源笔记的 /data/assets 文件夹中!
执行完上面两个小步骤,导入工作就算大功告成了!可以随便点开一些笔记,并尝试打开附件,应该都没问题了!
Step 5,(非必要步骤)批量整理思源笔记的目录结构
根据上面导入完成后,我们发现所有笔记都在一个笔记本下,对于喜欢“多笔记本”的同学,肯定不希望所有笔记都挤在一个笔记本下。
目前思源笔记不支持批量移动笔记,所以我们只能用离线方式批量移动,步骤如下:
- 关闭思源笔记软件;
- 在思源笔记的 /data/assets 目录中,直接把 sy 文件从子文件夹中移动到希望的笔记本中。因为它使用的是唯一 ID,所以不用担心直接移动文件会导致数据丢失;
- 重新打开思源笔记,确认所有笔记都显示正常。
由于每个笔记都是用 ID 做文件名的,所以你需要非常清楚你正在移动的文件是否是你想移动的。由于思源的笔记都是 JSON 纯文本格式,所以可以用记事本打开笔记文件,看里面的内容。
局限性说明
目前转换脚本对于表格的转换不太好,需要人肉处理表格格式问题。