V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
deppwxq
V2EX  ›  分享发现

你很需要的,一个一键导出「有道云笔记」所有笔记的功能

  •  
  •   deppwxq · 2020-05-18 10:58:02 +08:00 · 3443 次点击
    这是一个创建于 1651 天前的主题,其中的信息可能已经有所发展或是发生改变。

    作者:DeppWang原文地址

    一、出发点

    原来一直是有道云笔记的忠实用户,后面接触到了所见即所得 Typora,有点用不惯有道云笔记了,想着有什么法子能电脑本地文件和有道云笔记同步,这样电脑使用 Typora,手机使用有道云笔记。发现有道云笔记有 Open API ,打算利用提供的 API,写两个脚本,一个 pull 所有文件到本地,一个 push 本地文件到云笔记。但 API 太难用了,N 多年没更新了,问客服也没更新的意思,开发到最后发现竟然没有 Markdown 文件的接口,醉了。遂放弃。

    现在我使用 Typora + Dropbox + MWeb 实现同步笔记和手机查看编辑的功能,很香。

    最近给朋友推荐此方式,但发现有道云笔记最新的 Mac 客户端和网页端去除了导出所有笔记的功能!这是什么逻辑,怕用户跑了么。不怕,正好我原来写了导出所有笔记的脚本。

    二、导出所有笔记

    导出格式为原来默认的格式,如:Markdown 文件就是以 .md 结尾,笔记文件以 .note 结尾

    1 、导出前的准备工作

    • clone 项目,里面包含脚本
    git clone [email protected]:DeppWang/youdaonote-pull.git
    cd youdaonote-pull
    
    brew install python3 # Homebrew 安装 python3
    sudo easy_install pip3 # 安装 Python3 Package Installer
    pip3 install requests # 安装 requests 包,脚本依赖 requests
    

    2 、运行导出脚本

    python3 pullAll.py <username> <password> [localDir] # macOS
    python pullAll.py <username> <password> [localDir] # Windows
    
    • username:必填,你的有道云笔记用户名
    • password:必填,你的有道云笔记密码
    • localDir:选填,本地存放导出文件的文件夹,不填则默认为当前文件夹

    3 、示例:

    python3 pullAll.py [email protected] 1234567 ~/Dropbox/youdaonote
    

    4 、两个问题

    1. 如果你笔记的类型是「笔记」,那么导出的文件后缀是 .note,你使用 sublime 打开后会发现它是一个 xml 文件。此时只能在有道云笔记手动复制粘贴,如果你有大量这种类型文档,可以提个 issue,我尝试用代码看是否能解决。ps:强烈建议使用 Markdown 。
    2. 你上传的图片不能显示。因为 md 文件的图片地址没有使用绝对地址,而是使用相对地址,导致图片不能正确显示。

    5 、pullAll-config

    上一次输入的相关参数会保存到 pullAll-config 中,如果参数不变,再次同步时,可以直接输入以下命令:

    python3 pullAll.py # macOS
    python pullAll.py # Windows
    

    ps:脚本单纯本地运行,不用担心你的账号密码泄露

    三、导出指定文件夹

    如果你可不想导出所有文件夹,你可以导出指定文件夹

    1 、运行脚本

    python3 pullAll.py <username> <password> [[localDir] [ydnoteDir]] # MacOS
    python pullAll.py <username> <password> [[localDir] [ydnoteDir]] # Windows
    
    • ydnoteDir:有道云笔记指定导出文件夹名

    2 、示例

    python3 pullAll.py [email protected] 1234567 ~/GitHub GitHub
    

    3 、效果

    pullAll.py 脚本采用模拟登陆方式,频繁操作会被封 ip,此时可等待几分钟后重试,若一直被封。也可使用下面这种方式

    分享文件夹方式

    1 、先在有道云笔记上分享文件夹

    • shareKey:必填,当前文件夹的 shareKey (分享链接( url )的 id 也是 shareKey )
    • dirId:必填,分享文件夹的 id
    • localDir:选填,本地文件夹名,不填则默认为当前文件夹

    2 、运行脚本

    python3 pull.py <shareKey> <dirId> [localDir] # macOS
    python pull.py <shareKey> <dirId> [localDir] # Windows
    
    • localDir:选填,本地存放导出文件的文件夹,不填则默认为当前文件夹

    3 、示例

    python3 pull.py <shareKey> WEB0868de6ab385d5f607b29e8cb13ffecc ~/GitHub # macOS
    

    4 、效果

    5 、一个问题

    因为这个脚本我原来只导出 Markdown 格式笔记,经测试,导出的文件的 .note 文件不能正常打开,如果你有这方面的需求,请提 issue 。

    6 、config

    跟上面一样,上一次输入的相关参数会保存到 config 中,如果参数不变,再次同步时,可以直接输入以下命令:

    python3 pull.py # macOS
    python pull.py # Windows
    

    四、感谢(参考)

    2 条回复    2020-05-19 11:48:20 +08:00
    jerfoxu
        1
    jerfoxu  
       2020-05-18 13:08:13 +08:00
    不错 ,收藏呢!说不定以后要把有道云里面的东西备份一下
    deppwxq
        2
    deppwxq  
    OP
       2020-05-19 11:48:20 +08:00
    @jerfoxu 提前备份一下也行
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2976 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 12:50 · PVG 20:50 · LAX 04:50 · JFK 07:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.