# youdaonote-pull **Repository Path**: percygyq/youdaonote-pull ## Basic Information - **Project Name**: youdaonote-pull - **Description**: No description available - **Primary Language**: Python - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2022-02-23 - **Last Updated**: 2022-02-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # youdaonote-pull 项目改编自[youdaonote-pull](https://github.com/DeppWang/youdaonote-pull) ## 个人修改部分 - 删除本地有文件时只导出有更新的笔记的代码逻辑 - 配置文件中新增 suffix,用于定义想要导出的文件类型,可用的值有`.docx` `.note` `.md` - 删除 config.json 文件,并忽略其上传,示例配置如下 ``` { "username": "12345678901@163.com", "password": "123456", "local_dir": "E:/note", "ydnote_dir": "", "smms_secret_token": "", "suffix": ".docx" } ``` 现在有道云笔记不能导出笔记,迁移笔记很麻烦。此脚本可将所有笔记下载到本地。 ## 功能 - 可将所有笔记(文件)按原格式下载到本地 - 由于「笔记」类型文件下载后默认为 Xml 格式,不是正常笔记内容,**默认将其转换为 Markdown 格式** - 由于有道云笔记图床图片不能在有道云笔记外显示,**默认将其下载到本地,或指定上传到 [SM.MS](https://sm.ms)** ## 使用步骤 ### 一、导出前的准备工作 #### 1、安装 [Git](https://git-scm.com/downloads)、clone 项目 - 可根据 [廖雪峰 Git 教程](https://www.liaoxuefeng.com/wiki/896043488029600/896067074338496) 安装 Git,测试是否安装成功 ```sh git --version ``` - 打开命令行软件,如 Terminal (macOS)、PowerShell (Windows),clone 项目,里面包含脚本 ```shell pwd git clone https://github.com/DeppWang/youdaonote-pull.git cd youdaonote-pull ``` #### 2、安装 [Python3](https://www.python.org/downloads/)、安装依赖模块(包) - 可根据 [廖雪峰 Python 教程](https://www.liaoxuefeng.com/wiki/1016959663602400/1016959856222624) 安装 Python3,测试是否安装成功 ```shell python3 --version # macOS/Linux python --version # Windows ``` - 安装依赖包 ```shell # macOS sudo easy_install pip3 # 安装 Python3 Package Installer sudo pip3 install requests # 安装 requests sudo pip3 install markdownify # 安装 markdownify,用于 html 转化为 md ``` ```shell # Windows pip install -i https://pypi.tuna.tsinghua.edu.cn/simple requests pip install -i https://pypi.tuna.tsinghua.edu.cn/simple markdownify # 有问题可参考 https://www.liaoxuefeng.com/wiki/1016959663602400/1017493741106496 ``` #### 3、设置脚本参数配置文件 config.json ```json { "username": "your_youdaonote_username", "password": "your_youdaonote_password", "local_dir": "", "ydnote_dir": "", "smms_secret_token": "" } ``` * username:**必填**,你的有道云笔记用户名 * password:**必填**,你的有道云笔记密码 * local_dir:选填,本地存放导出文件的文件夹,不填则默认为当前文件夹 * ydnote_dir:选填,有道云笔记指定导出文件夹名,不填则导出所有文件 * smms_secret_token:选填, [SM.MS](https://sm.ms) 的 Secret Token(注册后 -> Dashboard -> API Token),用于上传笔记中有道云图床图片到 SM.MS 图床,不填则只下载到本地(youdaonote-images 文件夹),Markdown 中使用本地链接 * 提示:脚本单纯本地运行,不用担心你的账号密码泄露;建议使用 [Sublime](https://www.sublimetext.com/3) 编辑 config.json(避免编码格式错误) 示例: - macOS ```json { "username": "deppwangtest@163.com", "password": "12345678", "local_dir": "/Users/yanjie/Documents/youdaonote-pull/test", "ydnote_dir": "", "smms_secret_token": "SGSLk9yWdTe4RenXYqEPWkqVrx0Yexample" } ``` - Windows ```json { "username": "deppwangtest@163.com", "password": "12345678", "local_dir": "D:/Documents/youdaonote-pull/test", "ydnote_dir": "", "smms_secret_token": "SGSLk9yWdTe4RenXYqEPWkqVrx0Yexample" } ``` ### 二、运行导出脚本 ```shell python3 pull.py # macOS/Linux python pull.py # Windows ``` 效果: ![2020-06-23-145839](https://deppwang.oss-cn-beijing.aliyuncs.com/blog/2020-08-04-073242.png) ### 三、多次导出 多次导出时,同样使用以下命令: ```shell python3 pull.py # macOS/Linux python pull.py # Windows ``` 根据有道云笔记文件最后修改时间是否大于本地文件最后修改时间来判断是否需要更新。再次导出时,只会导出有道云笔记上次导出后新增、修改或未导出的笔记,不会覆盖本地已经修改的文件。**但有道云笔记和本地不要同时修改同一个文件,这样可能会导致本地修改丢失**! 更新时,会重新下载文件并覆盖原文件,图片也会重新下载。 ## 注意事项 1. 如果你自己修改脚本,注意不要将 config.json 文件 push 到 GitHub 2. 如果你不是开发者,可能对上面的命令行操作有所陌生,建议按步骤慢慢操作一遍。后续我会根据需求看是否应该提供网页下载 3. 请确认代码是否为最新,有问题请提交 [issue](https://github.com/DeppWang/youdaonote-pull/issues?q=is%3Aissue+is%3Aclosed) ```bash git pull origin master # 更新代码 ``` ## 原理 - 正常用户操作时,浏览器(前端)调用服务器(后端)接口,接口返回文件内容由前端渲染显示 - 原理是[找到有道云笔记的接口](https://depp.wang/2020/06/11/how-to-find-the-api-of-a-website-eg-note-youdao-com),模拟操作接口,将前端显示改为存放到本地 - Xml 转换为 Markdown,借助了 [xml.etree.ElementTreeI](http://docs.python.org/3.7/library/xml.etree.elementtree.html) ## 感谢(参考) - [YoudaoNoteExport](https://github.com/wesley2012/YoudaoNoteExport) ## 出发点 原来一直是有道云笔记的忠实用户,后面接触到了所见即所得的 [Typora](https://typora.io/),有点用不惯有道云笔记了,想着有什么法子能电脑本地文件和有道云笔记同步,这样电脑使用 Typora,手机使用有道云笔记。发现有道云笔记有 [Open API](http://note.youdao.com/open/developguide.html) ,打算利用提供的 API,写两个脚本,一个 pull 所有文件到本地,一个 push 本地文件到云笔记。但 API 太难用了,N 多年没更新了,问客服也没更新的意思,开发到最后发现竟然没有 Markdown 文件的接口,醉了。遂放弃。 现在我使用 Typora + [Dropbox](https://www.dropbox.com/)(有版本历史记录) + [MWeb](https://www.mweb.im/) 实现同步笔记和手机查看编辑的功能,很香。 最近给朋友推荐此方式,但发现有道云笔记最新的 Mac 客户端和网页端去除了导出所有笔记的功能!这是什么逻辑,怕用户跑了么。所以在原来 pull 脚本的基础上修改得到此脚本。 ![Profile views](https://gpvc.arturio.dev/youdaonote-pull)