笔者以前有一台群晖 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 版本。

有一点要注意,在安装时,要把“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 纯文本格式,所以可以用记事本打开笔记文件,看里面的内容。

局限性说明

目前转换脚本对于表格的转换不太好,需要人肉处理表格格式问题。

标签: none

添加新评论