使用markdown写文章有什么好处?
- markdown是一种纯文本格式(后缀
.md
), 写法简单, 不用考虑排版, 输出的文章样式简洁优雅 - markdown自带开源属性, 一次书写后, 即可在任意支持markdown格式的平台发布 (国内支持的平台有,
掘金
,知乎(以文档方式导入)
,简书(原本是最好用的, 最近在走下坡路)
) - 著名代码托管平台github, 每个代码仓库的说明书
README.md
就是典型的markdown格式
原来我喜欢在 掘金或简书后台 写markdown文章, 然后复制粘贴到 gitbook(前提是gitbook已经和github做了关联), 就可以发布到github仓库, 由于内容很吸引人, 在github收获一波stars(stars相当于点赞)
但最近掘金和简书等平台突然宣布, 在自己网站存储的图片不再支持外链, 也就是在其它网站请求本站服务器存储的图片一律404 ! 简书是直接封了外链; 掘金发了一个公告, 延期一周执行;
怎么办?
我只好将md文档保存到本地, 然后根据md保存的源图片信息,使用爬虫爬取图片到本地, 然后将图片上传到github仓库(github仓库支持图片上传, 而且不封外链), 将原图片信息替换为github仓库保存的图片信息
首先在github新建一个名为 GraphBed 的仓库, 用来存储图片
- 将仓库clone到本地 的
/Users/lijianzhao/github
文件夹
cd /Users/lijianzhao/github
git clone https://github.com/zhaoolee/GraphBed.git
并保证 在此文件夹下, 有权限push到github, 权限添加方法 https://www.jianshu.com/p/7167122783b5
将github已有的.md文章对应的仓库下载到本地(以星聚弃疗榜为例)
git clone https://github.com/zhaoolee/StarsAndClown.git
编写python脚本 md_images_upload.py
此脚本:
- 能搜索当前目录下所有md文件, 将每个md中的图片爬取到本地, 存放到
/Users/lijianzhao/github/GraphBed/images
目录; - 图片爬取完成后, 自动将
/Users/lijianzhao/github/GraphBed
目录下的所有图片, push到Github - 使用Github中的新图片地址,替换原图片地址
- 为防止单个文件夹图片数量过多, 限制每个文件夹图片数量为60个
- 自动生成新的图片文件夹
- 大功告成
几个优化点:
- 支持md引用本地目录图片的爬取(以后就可以在本地编写markdown文件了, 编写完成后, 运行上述脚本, 即可自动将md引用的本地图片上传到github, 同时本地图片的引用地址被github在线图片地址所取代)
- 为防止图片重名, 使用uuid重命名图片名称(后面发现使用uuid会导致相同的网络图片反复爬取保存, 所以后面使用网络图片的url地址对应的md5码为新名称, 即可防止生成内容相同, 名称不同的图片)
- 爬取本地图片,依然使用uuid重名防止重复(个人命名可能会反复使用
001.png
,002.png
等常用名称)- 对爬取的图片, 进行了类型判断, 自动补充图片扩展名
使用方法
- 安装python3
安装方法见 Python数据挖掘 环境搭建
- 将脚本
md_images_upload.py
放到/Users/lijianzhao/github/GraphBed
目录 (这里目录可以按照自己的来, 但脚本顶部的几行参数也要修改)
- 在命令行安装相关依赖包
pip3 install requests
pip3 install GitPython
- 从命令行进入
/Users/lijianzhao/github/GraphBed
cd /Users/lijianzhao/github/GraphBed
- 运行脚本
python3 md_images_upload.py
这里我已经是第二次替换图片了, 所以上面的动图显示的原图片也是GitHub的图片, 说明脚本第一次已完全替换成功~
图片又可以显示了
为了便于维护和下载脚本, 脚本已经开源到github, 永久下载地址: https://github.com/zhaoolee/Blog/tree/master/md_images_upload