前言
最近在探索各种现代化的笔记工具时,刚好用上了Joplin这款应用,尽管界面没那么好看,但开源、支持markdown、功能完善,而且还支持很多导入方法(事实上很多开源笔记都支持)。
其中的导入功能里面就有印象笔记,于是我想起来尘封多年的印象笔记账号。
事实上我已经很多年没用印象笔记了,上次使用似乎还是很多年前大学时,当时还开了好几年会员,用来收藏网页、微信公众号文章,挺好用的。
可惜印象笔记(evernote)从某一年开始搞了中国特供版和国际版彻底切割,吃相越来越难看,而且导出格式也改成了专有格式,越来越封闭,这不是一个好兆头,我最怕被绑定在某个平台或者生态里。
而且数据总是掌握在自己手里最安全,于是我开始了本文的笔记迁移折腾。
折腾过程
evernote-backup
https://github.com/vzhd1701/evernote-backup
一开始我使用了 evernote-backup ,但一直报错。
bash
evernote.edam.error.ttypes.EDAMUserException: EDAMUserException(errorCode=8, parameter='consumerKey')
我猜测是印象笔记中国版改了新的token。
因为网上很多博客文章都是可以用这个工具正常导出的,不过这些文章都是在2-3年前。
也有issue提到这个问题,参考: https://github.com/vzhd1701/evernote-backup/issues/113
evernote2
https://github.com/JackonYang/evernote2
后面在issus里看到有网友 fork 了 evernote-sdk 改了个新的版本,时间还挺新的。
我打算试一试,但还是报错,不过这个报错似乎跟接口没有关系,我通过修改这个工具的代码解决了这个报错。
详情见我提交的这个 issue: https://github.com/JackonYang/evernote2/issues/8
不过使用这个方法导出之后,joplin还是不能导入,我观察了导出的文件,虽然也是enex后缀,但里面是xml格式的,还带着resources目录,这似乎和joplin需要的格式不太一样
回到evernote-backup
第二天我又继续用回了evernote-backup项目,阅读代码尝试解决这个问题,不过在代码里似乎没找到问题所在(而且有些python的代码是真的难读懂😂)
于是只能继续去翻issues,果然有人提到这个问题,报错的解决方式是直接使用token,而不是用户名密码登录。
首先去中国版印象笔记的官网创建tken: https://app.yinxiang.com/api/DeveloperToken.action
然后使用以下命令来创建备份
bash
evernote-backup init-db --backend china -t token
这个工具的速度还挺快的,几千条笔记,没多久就下载好了。
导出的文件形式是一个笔记本一个enex文件。
导入Joplin
这时候就可以到Joplin这边导入了。
在 Joplin 里选择导入,选择enex目录形式,我之前在印象笔记里面主要是保存网页和公众号文章,所以这里选HTML格式,这样对原有的样式还原比较好,但同时也牺牲了可编辑性(网页在Joplin里编辑支持不佳)。
如果想要编辑可以选markdown,但格式可能会有点奇怪,这个就只能自行取舍了...
导入过程会显示进度,整个过程体验还是不错的。
每个enex文件会自动创建对应的笔记本,并且标签也能正确识别。
小结
到这里就已经成功脱离evernote了...
如果是要使用 joplin 代替印象笔记,还得配置一下同步功能,我暂时没这个需求,所以后续我再折腾一下同步功能。
最近我还同步试用了Zettlr、trilium这些笔记工具(Obsidian和Notion之前用过了),等有时间也写一下对比。