有道云笔记迁移到Obsidian的方法(保留文件创建时间)

这篇教程介绍了如何将有道云笔记导出为Markdown文件,并通过Python和Powershell修改文件的创建和修改时间,以匹配原有笔记的时间信息,最终迁移到Obsidian中。
摘要由CSDN通过智能技术生成

前言

前段时间突然发现,有道云笔记禁止导出笔记了。

以前好歹还是可以批量导出的,虽然只能导出成有道云的独有格式或者是pdf,但是好歹还是能导出的,结果现在是彻底禁止导出了。

去搜索了下有道云笔记导出,没想到真的有第三方的插件可以把有道云笔记里的笔记导出成markdown文件(下称md文件),再加上我最近正好接触到了一个免费笔记管理软件Obsidian,虽然这个软件没有云备份功能,但是他的文件都是本地存储,且是通用的markdown格式,也方便未来万一需要换软件的情况。(国内的大部分软件,就算能导出也都是独有格式,猜测是为了防止用户跑路吧)

思索之后,决定趁现在赶紧把有道云笔记里的东西迁移出来,防止之后彻底无法导出就完蛋了。

于是就有了这个教程。

这个教程主要分为两部分:

  1. 导出有道云笔记里的内容为markdown文件
  2. 修改导出的文件的创建时间和修改时间,与有道云笔记内匹配。

当然第二点只是针对于有强迫症的用户,对于一般用户来说,这点完全可以不用考虑。

那么总之,教程开始。

有道云笔记导出

关于有道云笔记导出为md文件,其实github上已经有一个相当好的软件了:youdaonote-pull

这个软件的功能有:

  • 可将所有笔记(文件)按原格式下载到本地
  • 由于「笔记」类型文件下载后默认为 Xml 格式,不是正常笔记内容,默认将其转换为 Markdown 格式
  • 由于有道云笔记图床图片不能在有道云笔记外显示,默认将其下载到本地,或指定上传到 SM.MS

嗯……具体的使用方法在原网页上写的非常详细,我在这里就不搬了,大家自己去原网页看就行了。

我在这里就说两点:

  1. 原网页里的第一步,如果没有git,也不想下载的话,可以不用按照原网页里说的使用git clone项目,只需要点击code内的Download ZIP按钮,即可下载全部文件,然后在本机上解压即可使用。

  1. 如果在软件执行的过程中出现转换为 Markdown 失败!请检查文件!的错误,请自行检查文件名是否出错。(我自己是因为有道云的文件名里不知道为啥会包含两个换行符,所以报错了)

执行完这个程序,大家就能得到一个包含所有嵌套文件夹、笔记、图片文件(在根目录下的youdaonote-images文件夹内)、附件文件(在根目录下的youdaonote-attachments文件夹内)的文件夹了。

这个文件夹其实已经可以当成Obsidian的库被识别了,只需要在Obsidian内选择『打开库文件夹』,选择这个导出的根目录,就可以使用了。

如果没有强迫症的话,这个教程看到这里就结束了。但是,我有强迫症啊!

有道云笔记里,每一篇笔记都会记录他的创建时间和修改时间,但是使用youdaonote-pull导出的笔记,创建时间全部为导出的当天,这样就丢失了重要的时间信息。

于是才有了接下来的教程。

有道云笔记信息导出

如果想要导出有道云笔记的信息(如时间等),就需要另一个软件了:YoudaoNoteExport

这个软件稍微有点年头了,2018年的,但是仍然可以使用。他的主要功能是导出有道云笔记,保存为JSON和DOCX/XML文件。DOCX/XML文件是笔记的内容,JSON文件是笔记的其它信息(包括标题、创建时间、修改时间等)。

我们正好需要这个软件导出的JSON文件,里面包含了文件的创建时间和修改时间。(这个软件导出DOCX有点问题,我用word无法打开,不过无所谓了,我们也不需要这个功能。)

这个软件导出的笔记默认文件名是笔记的id(一串数字和字母构成的字符串),我本来想把它改成以原笔记的名称作为文件名,但是遇到了一些问题,所以最后还是保留了id文件名,反正到时候遍历json文件的时候也不需要看这个文件名。

Python2和Python3共存

但是因为这个软件运行的环境是在Python2.7里的,而之前的youdaonote-pull是运行在Python3内的,这里就有一个问题就是需要Python2和Python3在同一个电脑内共存。

这个问题可以参考下面这两篇文章:

Windows10下python3和python2同时安装(一)安装python3和python2

Windows10下python3和python2同时安装(二)python2.exe、python3.exe和pip2、pip3设置

整体的做法按照这两篇文章内的设置就行,不过实际上,我自己只修改了python2和pip2。也就是命令python对应的是python3,而python2对应的就是python2,pip同理。(因为我准备做完这个导出就把python2卸载,然后保留python3的,所以我python3就没有做修改。)

总之不管怎么修改,现在的电脑内已经有了python2和python3两个版本了。不过在下载之前,还需要在python2内也安装requests库,如果大家按照之前两篇文章更改的话,那么安装的方式就是在命令提示符内输入:

pip2 install requests

然后接下来就是下载YoudaoNoteExport,和之前一样,只需要点击code里的Download ZIP下载所有文件,然后解压,得到一个名为YoudaoNoteExport-master的文件夹。

修改原代码

在使用之前,还需要对源码做一些修改。

也不知道为啥,下载下来的源码如果直接使用,会有非常多的错误,这也是我之前导出的时候遇到的问题。所以要对原代码进行一些修改。

打开之前解压的YoudaoNoteExport-master文件夹,然后右键main.py文件,选择Edit with IDLE,或者打开方式记事本,然后参照下文修改程序即可。(建议安装一个sublime编辑器

这个程序的问题主要集中在函数getFileRecursively内,代码如下:

def getFileRecursively(self, id, saveDir, doc_type):
        data = {
   
            'path': '/',
            'dirOnly': 'false',
            'f': 'false',
            'cstk': self.cstk
        }
        url = 'https://note.youdao.com/yws/api/personal/file/%s?all=true&f=true&len=30&sort=1&isReverse=false&method=listPageByParentId&keyfrom=web&cstk=%s' % (id, self.cstk)
        lastId = None
        count = 0
        total = 1
        while count < total:
            if lastId == None:
                response = self.get(url)
            else:
                response = self.get(url + '&lastId=%s' % lastId)
            print('\n------')
            # print('getFileRecursively:' + response.content)
            jsonObj = json.loads(response.content)
            total = jsonObj['count']
            for entry in jsonObj['entries']:
                fileEntry = entry['fileEntry']
                id = fileEntry['id']
                name = fileEntry['name']
                print('%s' % (id))
                # print('%s %s' % (id, name))
                if fileEntry['dir']:
                    subDir = saveDir + '/' + name
                    try:
                        os.lstat(subDir)
                    except OSError:
                        os.mkdir(subDir)
                    self.getFileRecursively(id, subDir, doc_type)
                else:
                    with open('%s/%s.json' % (saveDir,
  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值