有道云笔记markdown全部导出打包下载[带视频演示]

放弃有道云的理由

  1. 没有所见即所得,功能不全,没有快捷键,编写起来特别变扭。
  2. 只有搜索没有替换,之前换图床的时候,我一个个拷贝到typora,替换完再拷回来,跟个傻子一样,那时候已经对有道云不满了。
  3. 找不到批量下载,可以看出这家公司对于自己不够自信,需要采用为用户制造离开障碍的方式,来捆绑客户,而不是靠提升自己的用户体验来让用户心服口服。
    因此我在使用有道云笔记的时候会有心理负担,怕越写越多,以后就吊死在这棵歪脖子树上了。
    总之就是用得不开心。
  4. [图片上传失败...(image-84d4e6-1655957420643)]
    官方说有3个月1次的导出方式,但是我找遍了网页端、windows客户端、安卓客户端,都没有找到。

导出步骤

先说明一下,这个项目不是我写的,用的是Github上一位好大哥写的工具。
我看B站没有介绍这个工具的视频,我就自己做了一个,纯小白可以去跟着视频学;稍微有点基础的,看文档更方便。
这是视频地址:https://www.bilibili.com/video/BV11F411F7vG

==下面是转载的项目作者的README.md的内容==

youdaonote-pull

现在有道云笔记不能导出笔记,迁移笔记很麻烦。此脚本可将所有笔记下载到本地。

功能

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

使用步骤

一、导出前的准备工作

1、安装 Git、clone 项目
git --version
  • 打开命令行软件,如 Terminal (macOS)、PowerShell (Windows),clone 项目,里面包含脚本
pwd
git clone https://github.com/DeppWang/youdaonote-pull.git
cd youdaonote-pull
2、安装 Python3、安装依赖模块(包)
python3 --version  # macOS/Linux
python --version   # Windows
  • 安装依赖包
# macOS
sudo easy_install pip3      # 安装 Python3 Package Installer
sudo pip3 install -r requirements.txt
# Windows
pip install -r requirements.txt

# 有问题可参考 https://www.liaoxuefeng.com/wiki/1016959663602400/1017493741106496
3、设置登录 Cookies 文件 cookies.json
{
    "cookies": [
        [
            "YNOTE_CSTK",
            "**",
            ".note.youdao.com",
            "/"
        ],
        [
            "YNOTE_LOGIN",
            "**",
            ".note.youdao.com",
            "/"
        ],
        [
            "YNOTE_SESS",
            "**",
            ".note.youdao.com",
            "/"
        ]
    ]
}

由于有道云笔记登录升级,目前脚本不能使用账号密码登录,只能使用 Cookies 登录。

获取 Cookies 方式:

  1. 在浏览器如 Chrome 中使用账号密码或者其他方式登录有道云笔记
  2. 打开 DevTools (F12),Network 下找「主」请求(一般是第一个),再找 Cookie
  3. 复制对应数据替换 **

[图片上传失败...(image-20aaf7-1655957420643)]

示例:

{
    "cookies": [
        [
            "YNOTE_CSTK",
            "rR_Pejz0",
            ".note.youdao.com",
            "/"
        ],
        [
            "YNOTE_LOGIN",
            "3||1649054441155",
            ".note.youdao.com",
            "/"
        ],
        [
            "YNOTE_SESS",
            "v2|BdllbnwfaWl5RMUWOfqZ0gShf***6LqFRqB0MYfh4JLR",
            ".note.youdao.com",
            "/"
        ]
    ]
}
  • 提示:脚本单纯本地运行,不用担心你的 Cookies 泄露
4、设置脚本参数配置文件 config.json

建议使用 Sublime 等三方编辑器编辑 config.json,避免编码格式错误

{
    "local_dir": "",
    "ydnote_dir": "",
    "smms_secret_token": ""
}
  • local_dir:选填,本地存放导出文件的文件夹,不填则默认为当前文件夹
  • ydnote_dir:选填,有道云笔记指定导出文件夹名,不填则导出所有文件
  • smms_secret_token:选填, SM.MSSecret Token(注册后 -> Dashboard -> API Token),用于上传笔记中有道云图床图片到 SM.MS 图床,不填则只下载到本地(youdaonote-images 文件夹),Markdown 中使用本地链接

示例:

  • macOS
{
    "local_dir": "/Users/deppwang/Documents/youdaonote-pull/test",
    "ydnote_dir": "",
    "smms_secret_token": "SGSLk9yWdTe4RenXYqEPWkqVrx0Yexample"
}
  • Windows
{
    "local_dir": "D:/Documents/youdaonote-pull/test",
    "ydnote_dir": "",
    "smms_secret_token": "SGSLk9yWdTe4RenXYqEPWkqVrx0Yexample"
}

二、运行导出脚本

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

效果:

[图片上传失败...(image-b0f61c-1655957420643)]

三、多次导出

多次导出时,同样使用以下命令:

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

根据有道云笔记文件最后修改时间是否大于本地文件最后修改时间来判断是否需要更新。再次导出时,只会导出有道云笔记上次导出后新增、修改或未导出的笔记,不会覆盖本地已经修改的文件。但有道云笔记和本地不要同时修改同一个文件,这样可能会导致本地修改丢失

更新时,会重新下载文件并覆盖原文件,图片也会重新下载。

注意事项

  1. 如果你自己修改脚本,注意不要将 cookies.json 文件 push 到 GitHub

  2. 如果你不是开发者,可能对上面的命令行操作有所陌生,建议按步骤慢慢操作一遍

  3. 请确认代码是否为最新,有问题请先看 issue 是否存在,不存在再提 issue

    git pull origin master  # 更新代码
    

原理

正常用户浏览器操作时,浏览器(前端)调用服务器(后端)接口,接口返回文件内容由前端渲染显示。原理是找到有道云笔记的接口,模拟操作接口,将前端显示改为存放到本地。Xml 转换为 Markdown,借助了 xml.etree.ElementTreeI

感谢(参考)

出发点

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

发现有道云笔记最新的 Mac 客户端和网页端去除了导出所有笔记的功能!这是什么逻辑,怕用户跑了么。所以在原来 pull 脚本的基础上修改得到此脚本。

现在我使用 Obsidian + GitHub + Working Copy 实现自动同步笔记和手机查看编辑的功能,很香。使用教程

贡献

欢迎贡献代码,但有几个注意事项:

  1. commit 请使用英文;一次 commit 只改一个点;一个 commit 一个 PR
  2. 代码注释需要有中英文空格
  3. 请确保通过测试用例:在 macOS 和 Windows 环境中直接执行 test.py 没有问题

替代方案

  • 坚果云+Typora
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,504评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,434评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,089评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,378评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,472评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,506评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,519评论 3 413
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,292评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,738评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,022评论 2 329
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,194评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,873评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,536评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,162评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,413评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,075评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,080评论 2 352

推荐阅读更多精彩内容

  • 06月23日 10时21分 现在我刚才为什么说,其实咱们岗前的这一部分就已经慢慢的趋近于实战了, 虽然说叫实战,我...
    王大生阅读 509评论 0 1
  • 李宏伟也睁大眼睛,看着面前的一袋子钱,脸上写满了难以置信,如同刚才周曼媛所说,如果这笔债好收,他早就自己去收了,百...
    伍子688688阅读 134评论 0 0
  • 关于煮菜放盐多的危害 你知道杀鸡 、鸭的时候,如果想要一碗血,碗里除了放水,还必须放什么? (盐) 如果不放盐,血...
    杜晴三好生活倡导者阅读 272评论 0 0
  • Python 多文件间传递全局变量参数 起因 在工程中遇到需要退出子线程 于是在线程中加入标志位来判定是否继续运行...
    Super7阅读 879评论 0 0
  • 多年以前,曾有人调侃性地问“如果我死了,我的QQ怎么办?”这个问题,后来腾讯给出了答案,QQ数字产品可以继承。这是...
    罗名旨阅读 391评论 1 7