使用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)

脚本代码唯一需要配置的地方,就是CONFIGSauthorization这一项;

当登录进 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 吧,大概。

另:希望博客园长长久久。

热门相关:少林武僧在异界   陆爷的小祖宗又撩又飒   陆爷的小祖宗又撩又飒   抗日之特战兵王   史上第一宠婚:慕少的娇妻