放弃有道云的理由
- 没有所见即所得,功能不全,没有快捷键,编写起来特别变扭。
- 只有搜索没有替换,之前换图床的时候,我一个个拷贝到typora,替换完再拷回来,跟个傻子一样,那时候已经对有道云不满了。
- 找不到批量下载,可以看出这家公司对于自己不够自信,需要采用为用户制造离开障碍的方式,来捆绑客户,而不是靠提升自己的用户体验来让用户心服口服。
因此我在使用有道云笔记的时候会有心理负担,怕越写越多,以后就吊死在这棵歪脖子树上了。
总之就是用得不开心。 - [图片上传失败...(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 教程 安装 Git,测试是否安装成功
git --version
- 打开命令行软件,如 Terminal (macOS)、PowerShell (Windows),clone 项目,里面包含脚本
pwd
git clone https://github.com/DeppWang/youdaonote-pull.git
cd youdaonote-pull
2、安装 Python3、安装依赖模块(包)
- 可根据 廖雪峰 Python 教程 安装 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
方式:
- 在浏览器如 Chrome 中使用账号密码或者其他方式登录有道云笔记
- 打开 DevTools (F12),Network 下找「主」请求(一般是第一个),再找
Cookie
- 复制对应数据替换
**
[图片上传失败...(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.MS 的Secret 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
根据有道云笔记文件最后修改时间是否大于本地文件最后修改时间来判断是否需要更新。再次导出时,只会导出有道云笔记上次导出后新增、修改或未导出的笔记,不会覆盖本地已经修改的文件。但有道云笔记和本地不要同时修改同一个文件,这样可能会导致本地修改丢失!
更新时,会重新下载文件并覆盖原文件,图片也会重新下载。
注意事项
如果你自己修改脚本,注意不要将
cookies.json
文件push
到 GitHub如果你不是开发者,可能对上面的命令行操作有所陌生,建议按步骤慢慢操作一遍
-
请确认代码是否为最新,有问题请先看 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 实现自动同步笔记和手机查看编辑的功能,很香。使用教程
贡献
欢迎贡献代码,但有几个注意事项:
- commit 请使用英文;一次 commit 只改一个点;一个 commit 一个 PR
- 代码注释需要有中英文空格
- 请确保通过测试用例:在 macOS 和 Windows 环境中直接执行
test.py
没有问题
替代方案
- 坚果云+Typora