印象笔记导出的enex文件转换为Markdown
阿铁木贞子弹
2022年03月20日 15:54
收录于文集
共15篇

(这篇不是Obsidian教程,主要是转换enex为Markdown)

去年偶然在B站刷到Typora收费的消息,虽然偶尔用但这消息还是在B站了解到的。前段时间又刷到了obsidian的视频,可能就是之前点进过几个讲Typora收费的视频。

看了这些介绍obsidian的视频后,我就想把以前印象笔记上的内容给转出来。

先下载了印象客户端,看了下14年底用用的印象笔记,但也就用了不到半年。

导出

首先是导出https://www.zhihu.com/question/327418797/answer/2145154447

选中笔记本,可以选内层,也可以选外层,也可以选所有,点列表那一栏右边的三个小圆点导出笔记。

我是只选了一个笔记本,导出后的enex层级不清楚有没有,反正是转Markdown后是没层级的,都在一起了,所以还是分开导出更好吧。

转换

导出后又准备转Markdown,应该是有不少工具的,但大多都搜的是叫evernote2md,还有什么先导入Joplin再导出Markdown的方案,我闲得蛋疼吗,再装个软件。搜了下确实不少后出的笔记软件支持导入enex,如果又支持导出Markdown的话,那也行吧。

最先看的是obsidian帮助里提到的工具yarle,使用指南>导入数据,从Evernote导入https://forum.obsidian.md/t/import-from-evernote/108

记得有个知乎的文章同时提到这两工具,但也是链接忘了,同时搜这两名字搜到的https://zhuanlan.zhihu.com/p/400835213,我记得里面只有这两工具链接也没其它文字和图片。。。

这两工具用的也是折腾了半天,一个是命令行,一个是有图形界面。都有各种选项吧,yarle更丰富点,而且转换成Markdown也有选项,在STEP 2:中,Target Dialect中就可以选择是转成什么软件要用的Markdown。

export enum OutputFormat {    ObsidianMD= 'ObsidianMD&#​39;,    StandardMD= 'StandardMD&#​39;,    LogSeqMD = 'LogSeqMD&#​39;, }

Target Dialect

附件链接

刚开始我在链接那纠结了半天,这个Obsisdian用的附件语法,在帮助里,使用指南>嵌入文件那写了而正经Markdown图片嵌入是

其实我对于Markdown用的最多的也就是多级标题和无序列表,都不怎么用图片啥的,要在Markdown里插入视频,应该只有iframe标签,或者video标签,音频的话就是audio标签吧。在思源笔记里插入图片和视频,导出的Markdown里这两者就是video标签和audio标签,在Typora中第一次试了下直接拖进去音频也是用的audio标签。最起码这样的话在Typora里是能正常看的,但是这两种标签在MarkText里却是文本显示。

但我刚开始直接在Target Dialect那选了Obsisdian后,转出Markdown里面的图片,在Typora里也看不了,所有附件类型的链接都成了这种了。

又试了下evernote2md,转出后的Markdown,原先的图片倒是正经的音频的话是直接转为链接,但有个很大的问题,表格都错乱了, 这个不得不放弃了,除非你原先印象笔记中没有表格。

链接效果

后来试着在Target Dialect选择了StandardMD,这样转出的链接就是传统Markdown链接了,虽然在Obsisdian中没有音频播放条了,但是可以鼠标移到链接那会弹出播放条,或者直接点链接,直接点打开新页面覆盖当前页面,虽然能前进后退但体验也不是很好。音频链接的话在Typora里也能点击打开用本地音频播放器播放。印象笔记里是音频播放条则是出现在该笔记的上方。

又导入思源笔记看了下,对于附件链接的话,它是直接右边打开窗口,音频的话这里面只放个播放条看着确实不是太好,直接鼠标移到链接也没播放条。但是PDF附件链接的话,思源笔记直接打开右边窗口左右看着确实很方便,在Obsisdian里,我还是手动拆分左右窗口啊,但是鼠标移到链接上会有PDF预览(刚开始还以为是点击弹出的专属PDF阅读窗口),如果你不绕一下点链接,就会被那预览给影响的点不了。还有我操作的时候不是最大化,点击最大化这PDF也没自适应啊,还是之前的35%,这点实在是不如思源笔记,我看思源笔记不论最大化还是窗口,人家PDF都不动啊。

表格问题

还有个表格的问题,以前也不用Markdown中的表格啊,看了下好像也是个坑,反正不是很灵活。

我发现转出的表格上面都有一空行,在Markdown里表格应该是必须要表头,而我在原先印象笔记中好多都是没表头的表格,至于有表头的,在源码模式里把表格第三行覆盖了第一行就行了,第三行空行删掉,就是懒得操作了除非在每篇整理的时候一个一个过一遍。

原先在印象笔记里表格最后一列放的音频,原先到导出的这样的链接,在阅读模式是只有播放条左边的播放按钮,其实和不在表格里一样,取决于表格的宽度,它只是正好表格左边内容多挤的最后音频播放条只显示一小部分。但这其实也没啥用呀,又拖动不了进度条,当然这音频短的话还好说。又在思源笔记里的表格添加音频,直接加到外面了。那最后还是选用这样的链接,主要我要在其它Markdown编辑器中也能勉强的看。

链接小发现

后来发现音频写成图片那种嵌入语法,在Obsisdian也能显示出播放条,PDF也是直接在当前阅读模式下就能看,不用新开窗口。可能是我关了Wiki链接吧,主要后面我还用了个附件链接的插件要关这个选项。但这样这Typora里看的话还是以图片形式,只是图片加载不出来了,这和使用效果一样了,在普通的Markdown编辑器里这就显示一段路径的文本,那这也就没啥用,只有在Obsisdian里才能用图片链接来链接音频。。

附件位置

最后还有关于附件的问题,附件到底是以什么样的方式去存,Obsidian里的选项我倾向于最后一种,当前文件夹下指定的文件夹中。

文件与链接

yarle转出的附件,默认也是在当前文件夹下指定的子文件夹中,然后是分别按Markdown文件名.resources,建了不同的附件文件夹,每个附件文件夹只放该Markdown中的附件,其实这种我觉得也不错,但是你后面新建的其它笔记按Obsidian的那些选项又不是这样存放的,再往这些笔记里添加图片啥的也不是按那样存放的。(实在不想截图,就用Obsidian帮助里的文字说明改一下)

- path文件夹 - 笔记1 - 笔记2 - _resources     -笔记1.resources         - 笔记1的附件.jpg         - 笔记1的附件.wav     -笔记2.resources         - 笔记2的附件.png         - 笔记2的附件.mp3

在yarle里还有选项可以设置,在Date format:框下面的Store attachments in notebook-level(haveEnexLevelResources)和Store attachments in one folder only(haveGlobalResources)就是控制这附件位置的,两者同时选好像是只能生效notebook-level

附件文件夹位置设置

(resourcesDir)这里设置附件文件夹的名字

选择notebook-level,就和Obsidian第四选项一样,在当前文件夹下的附件文件夹,就是./_resources

- path文件夹 - 笔记A - 笔记B - 笔记C - 笔记D - _resources     - 笔记A的附件     - 笔记B的附件     - 笔记C的附件     - 笔记D的附件

选择one folder only,最后附件存放在当前文件夹的上级目录下的附件文件夹,就是../_resources

- _resources     - 笔记1的附件     - 笔记2的附件     - 笔记3的附件     - 笔记4的附件 - path文件夹 - 笔记1 - 笔记2 - 笔记3 - 笔记4

但是为什么这个导出enex的或者转换出的Markdown都没层级呀,否则的话直接选notebook-level按笔记本分,就和Obsidian最后选项一致了。

事实证明想多了,这Obsidian自带更新附件位置的。当然如果不用Obsidian,又不想移动太多那就上面说的后者方法。我就想在印象笔记里,直接分别导出笔记本的每个二级目录,选用notebook-level选项分别转换,重新整理,不论怎样都是麻烦的事。

插件解决链接问题

最后还有个方法,就是我用attachment搜第三方插件,搜到了同一作者的两个插件Consistent attachments and links和Unique attachments。前者就是个唯一性的插件,按MD5生成文件名确定是唯一的,我又不想把附件名弄成MD5所以算了吧。后者就是我想要的插件,把已经写成的Wiki链接转为标准的Markdown链接,才知道上面的那是Wiki链接。。

https://github.com/dy-sh/obsidian-consistent-attachments-and-links

按它的说明,设置>文件与链接>始终更新内部链接关了,内部链接类型选为相对路径,使用Wki链接关了,新附件的默认位置:当前文件夹下指定的子文件夹中,好像当前文件所在的文件夹也行,子文件夹名称随便写个吧(图在上面)。

最后插件的设置里也要设置附件子文件夹名称,最好和文件与链接那子文件夹名设成一样吧,虽然关了自动更新,但新加的图那应该也是按文件与链接里设置的存放。这插件只是最后更新路径时用吧。

Consistent attachments and links插件设置

然后直接运行命令Reorganize vault会逐个运行以下命令

  • Replace all wikilinks with markdown links

  • Convert all embed paths to relative

  • Convert all link paths to relative

  • Collect all attachments

  • Delete empty folders

当然可以根据自己需求分别运行单独的命令,比如我就想按原先存放附件的位置,那就不运行这个Collect all attachments。

最后的最后我又在印象笔记里把这笔记本里的二级目录分别导出,enex文件名就是二级目录的文件名

yarle的bug

然后又用yarle来转换,此时又遇到之前遇到过的问题

yarle中的错误

uTools中OCR

出错后用uTools里带的OCR提取文本复制直接进这目录,发现appData\Local下的yarle都没

搞错了,反斜杠没识别出来,最后知道这问题怎么解决了,也知道这问题是怎么触发的。

Target Dialect由默认的Obsidian换成StandardMD,不知道什么幺蛾子,在最后Step 5>Logs里看到了enexSources里第一条是 "./test/data/test-template.enex",莫名其妙的,确实也有这文件,在.\resources\app\test\data里,所以这就是作者测试的吧。。

解决方法是Step 2里,选完各选项,在Step 4选输出目录,Step 1选enex文件。最好还是关了重开,我试的时候有些没转换出来的。

还有个问题是开启后直接调选项时这工具可能会自动重启一下,要么就先等一下再选选项

yarle重启时的图

这次转换时(新下的4.8.5版本),我才发现这enex能多选,还是先用默认的附件位置转换,结果正是想要的效果。之前印象笔记默认导出的是Evernote.enex,而yarle转换出的文件正是在notes文件夹下的Evernote文件夹里。由于我这次导出时就按笔记本二级目录的文件夹命名,所以多选enex文件,转换出的就是这几个文件夹,也不用自己吭哧吭哧移动了。

对了,由于所有插件设置各种配置什么的都在.obsidian文件夹内,所以试验这些操作的时候就是复制这份到刚刚转换出的notes同级目录内,然后在obsidian里打开其它库选这目录。

Obsidian链接空格问题

搞清楚了,这空格问题是obsidian和yarle转换的问题。经过把附件拖到Obsidian和Typora编辑器中试出来结果

在Obsidian里打开Wiki链接,直接拖进去显示的链接和文件名一样,如果是传统链接,托进去空格变成了%20

但是在Typora里,拖进去传统链接不用UrlEncode就可正常使用,那你Obsidian里关了Wiki链接为什么就非要求传统链接要URLEncode呢?

我看到STEP 2里有Perform URL Encoding on FileNames And Links和Sanitize spaces in resource names

经过测试后者是和Replacement character for sanitizing spaces in resource names一起用的,但前者转成UrlEncode就是个坑。

点选取消再选中可以在Step 5logs中看到

config: urlEncodeFileNamesAndLinks: false config: urlEncodeFileNamesAndLinks: true

测试了一通,Target Dialect默认Obsidian,其它也都默认,转换出是不仅是空格,前面路径都给UrlEncode了,选了notebook-level或one folder only只有空格变成了%20,但你用Wiki链接又不需要UrlEncode,那转的有什么用。

Target Dialect选StandardMD则是全无效,这传统链接需要UrlEncode这又转出无效,又有什么用,不过选StandardMD其实就不是为了在Obsidian里用,这个情有可原。

所以那就只能用替换了(replacementChar),默认的_或者-都行,但选这个一定要把Sanitize spaces in resource names勾选上,这样出来的文件名和附件链接里的路径都把空格替换了。

我还试过替换成%20,结果很搞,文件名和链接文字里的空格也变成%20,看着实在是不爽,所以最后还是用默认的_吧,实在搞不懂为什么obsidian里用传统链接要空格要用UrlEncode

或许用其它系统,导出这些各种不同搭配的选项又有不一样的结果。

总结

印象笔记里按最里层级的笔记本导出多个enex文件

如果不用Obsidian的话,原印象笔记里没表格,那可以用evernote2md

有表格那还是yarle吧,而且定制的选项多。最后不用Obsidian也可以在Target Dialect里选StandardMD。

要用Obsidian还得考虑这链接要传统链接还是Wiki链接,根据自己需要选ObsidianMD,StandardMD,也可以就选ObsidianMD,最后用插件转换。

附件有空格就使用sanitizeResourceNameSpaces替换,附件名最好还是别有空格了,千万别在urlEncodeFileNamesAndLinks上折腾。

使用yarle时,打开先等会,直接选选项可能会重启。

一定要先在STEP 2里先选好选项,然后我是先在STEP 5选导出位置,然后才在STEP 1里选enex文件,这个STEP 3中的模版,我都不熟悉碰都没碰,建议先了解下Obsidian里的模版,然后在这里自行尝试吧。看过些教程可以把标签放到开头的三小---里,但是这样的话我觉得转换就只能选单一的enex文件了,毕竟有些标签不重叠。