从一些笔记软件导出markdown文档后,图片都是本地图片,文档数量过多,用typora一一打开上传图片过于繁琐,特开发一个一键迁移文章图片的脚本,方便markdown文档的迁移。
文章目录
- 大致需求
- 开源地址
- 设计思路
- 脚本介绍
- 快速使用
- 使用效果
- 自定义
大致需求
最近想把notion中所有的文件导出,然后导入其它笔记软件。但是notion导出的markdown文档中的图片都转换为了本地的图片,图片的路径也是本地的相对路径,如果直接导入其它笔记软件,那么图片都没有了。
有一种比较简单的办法,使用Typora的【上传所有本地图片】功能,可以一键上传到图床中。
但是导出的文档实在太多了,而且目录结构还比较复杂,如果一一点开上传,那么需要花不少时间,所有就寻思着能不能写个脚本,一键上传某个目录下所有markdown文件中所有的本地图片。
大致需求:
- 支持单个markdown文件以及递归查找某个目录下所有markdow文件进行转换。
- 完善的日志输出能力,能够查看具体上传情况。
- 支持配置smms图床的token。
开源地址
https://gitee.com/ATFWUSa/markdown-img-convert
设计思路
思路很简单:
- 递归查找某个目录下的所有markdown文件列表。
- 正则的方式提取出某个markdown中所有的本地图片url。
- 读取每张本地图片并上传到smms.app中,并获取转换后的url。
- 全文中替换本地图片的路径为转换后的url。
- 将替换完所有图片后的markdown内容写入新的文件。
脚本介绍
- 支持单个markdown文件以及递归查找某个目录下所有markdow文件进行转换。
- 完善的日志输出能力,能够查看具体上传情况。
- 支持配置smms图床的token。
快速使用
下载脚本:
git clone https://gitee.com/ATFWUSa/markdown-img-convert.git
切换路径:
cd markdown-img-convert
下载脚本所需依赖:
pip3 install -r requirements.txt
使用范例:(递归转换当成目录下所有markdow文件,指定smms.app API的token,并将日志输出到文件convert_log.txt中)(如何获取smms.app API token请自行百度)
python3 convert.py -t catalog -p . -stoken te1i**********PaBKNWiSls2EHpkxXt -log convert_log.txt
所有参数:
usage: convert.py [-h] -t CONVERT_TYPE -p CONVERT_PATH -stoken SMMS_TOKEN [-log LOG_PATH]
optional arguments:
-h, --help show this help message and exit
-t CONVERT_TYPE, --convert-type CONVERT_TYPE
convert one [file] or one [catalog]
-p CONVERT_PATH, --convert-path CONVERT_PATH
convert path
-stoken SMMS_TOKEN, --smms-token SMMS_TOKEN
smms.app API token
-log LOG_PATH, --log-path LOG_PATH
output the log into a file
使用效果
自定义
- 可以简单修改配置支持更多的图片文件。
- 可以简单修改配置达到公网文件转储的功能。
- 可以添加代码做到自定义图床。
- 可以参考源代码做到更多自定义功能后。
ATFWUS 2023-07-08