使用SM.MS做MarkDown图床(Python脚本)
缘起
曾经写过一篇使用博客园做MarkDown图床的文章,好像也帮助到了很多小伙伴;
从那时起,我也是一直把博客园当图床来用的,挺惭愧。
一方面,白嫖博客园,而博客园的现状也不太好;
另一方面,免费总是有风险的,以前有些文章里的图片链接是语雀或者Gitee的,但是现在这些图片都挂掉了。
我想,是时候换个图床继续白嫖了(SM.MS:你不要过来啊)。
环境准备
本文使用方法,需要以下环境支撑:
-
SM.MS账户
关于注册 SM.MS 的碎碎念:
SM.MS 官网说了,由于网络原因,国内要使用的 SM.MS 的网址为:https://smms.app/;
注册的时候,它的密码要求很奇怪,反正我按照它的要求尝试了很多次,一直不给过,说密码不符合要求,最后我这样做的:使用大小写夹杂的字母+数字,不要其它符号了,并且密码长度为16位;
-
本地安装Python 3.x
-
本地使用Typora作为MarkDown编辑器
其实网上有很多「SM.MS + PicGo + Typora」三件套的教程,也挺方便;
我为什么要麻烦得用 Python 呢?无它,因为我已经有 Python 了啊,就懒得再特意装个 PicGo 不是嘛。
Python脚本及其配置
脚本代码如下(你可能需要先pip install requests
):
import sys
import requests
CONFIGS = {
"url": "https://sm.ms/api/v2/upload",
"authorization": "你的 SM.MS 的 API Token",
}
def upload_image(image_path):
headers = {"Authorization": CONFIGS.get("authorization")}
files = {"smfile": open(image_path, "rb")}
response = requests.post(CONFIGS.get("url"), files = files, headers = headers).json()
return response["data"]["url"]
def main(argv):
args = iter(argv)
next(args)
for image_path in args:
print(upload_image(image_path))
if __name__ == "__main__":
main(sys.argv)
脚本代码唯一需要配置的地方,就是CONFIGS
的authorization
这一项;
当登录进 SM.MS 网站后,网页右上角User -> Dashboard
进入下图界面:
直接生成一个API Token
,填在这一项就可以了;
Typora配置
做法和使用博客园做MarkDown图床这篇文章里面一样,就不多说了。
唯一和那篇文章不一样的地方是,点击验证图片上传选项
,会发现报错,不能成功上传图片;
这里我想说一下,在 Typora 里面贴图片,会自动上传成功的。
这个地方报错的原因,应该跟权限有关,Typora 用来测试上传的图片在 AppData
文件夹里,可能没有权限读取这个图片。
还有一件事
SM.MS 的账户,会免费提供 5 GB的空间用来存储图片;
就算一张图片 100 KB,也能免费存储 52428 张图片了,更不要说大部分图片并没有 100 KB这么大,足够使用很久了,挺良心;
而且,SM.MS 的网站还可以查看自己上传的图片啊,不像博客园是没法查看的,这下安全感上来了。
实在过意不去,开个 VIP ?
我大概会慢慢将之前文章的图片都转到 SM.MS 吧,大概。
另:希望博客园长长久久。