首页 > 编程语言 >使用SM.MS做MarkDown图床(Python脚本)

使用SM.MS做MarkDown图床(Python脚本)

时间:2024-01-24 17:46:09浏览次数:38  
标签:MarkDown SM Python 博客园 MS image 图片

缘起

曾经写过一篇使用博客园做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进入下图界面:

image-20240124165021588

直接生成一个API Token,填在这一项就可以了;

Typora配置

做法和使用博客园做MarkDown图床这篇文章里面一样,就不多说了。

唯一和那篇文章不一样的地方是,点击验证图片上传选项,会发现报错,不能成功上传图片;

这里我想说一下,在 Typora 里面贴图片,会自动上传成功的。

这个地方报错的原因,应该跟权限有关,Typora 用来测试上传的图片在 AppData文件夹里,可能没有权限读取这个图片。

还有一件事

SM.MS 的账户,会免费提供 5 GB的空间用来存储图片;

就算一张图片 100 KB,也能免费存储 52428 张图片了,更不要说大部分图片并没有 100 KB这么大,足够使用很久了,挺良心;

而且,SM.MS 的网站还可以查看自己上传的图片啊,不像博客园是没法查看的,这下安全感上来了。

实在过意不去,开个 VIP ?

我大概会慢慢将之前文章的图片都转到 SM.MS 吧,大概。

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

标签:MarkDown,SM,Python,博客园,MS,image,图片
From: https://www.cnblogs.com/Journing/p/17985341

相关文章

  • python 面向对象专题(23):基础(14)类对象、实例对象、类属性、实例属性、类方法、实例方法
    1简易理解(快速理解)类对象:定义的类就是类对象实例对象:类对象实例化后就是实例对象类属性:定义在init外部的变量实例属性:定义在__init__内部的带有self.的变量类方法:定义在类对象中且被@classmethod装饰的方法就是类方法实例方法:定义在类对象中,且......
  • 用Python实现高效数据记录!Web自动化技术助你告别重复劳动!
    测试管理班是专门面向测试与质量管理人员的一门课程,通过提升从业人员的团队管理、项目管理、绩效管理、沟通管理等方面的能力,使测试管理人员可以更好的带领团队、项目以及公司获得更快的成长。提供1v1私教指导,BAT级别的测试管理大咖量身打造职业规划。简介关键数据记录是We......
  • Python多任务协程:编写高性能应用的秘密武器
    测试管理班是专门面向测试与质量管理人员的一门课程,通过提升从业人员的团队管理、项目管理、绩效管理、沟通管理等方面的能力,使测试管理人员可以更好的带领团队、项目以及公司获得更快的成长。提供1v1私教指导,BAT级别的测试管理大咖量身打造职业规划。多任务协程编程协程,又......
  • Python多任务协程:编写高性能应用的秘密武器!
    多任务协程编程协程,又称微线程,纤程。英文名Coroutine。协程也是一种轻量级的多任务编程技术,它可以在同一个线程中实现多个任务的切换和调度。协程通过任务的暂停和恢复,避免了线程切换的开销并减少了锁的使用。协程常用于异步编程场景,比如网络编程和IO密集型任务。最大的优势就是协......
  • 点燃你的Python技能:剖析闭包与装饰器的魔力
    闭包与装饰器函数引用讲解闭包之前,需要理解一个概念,Python中定义的函数,也可以像变量一样,将一个函数名,赋值给另一个变量名,赋值后,此变量名就可以做为该函数的一个别名使用,进行调用函数,此功能在讲解列表操作的sort()方法时使用过,sort()方法的key参数传入的就是一个函数名。defsho......
  • 用Python实现高效数据记录!Web自动化技术助你告别重复劳动!
    自动化关键数据记录简介关键数据记录是Web自动化测试中的关键部分,它们提供了关于系统行为和执行过程的详细信息,有助于验证用例的正确性,排查问题和确保应用程序的质量。行为日志行为日志是一种用于记录系统或应用程序的操作和事件的技术。它的目的是为了跟踪和记录应用程序的执行......
  • Python多任务协程:编写高性能应用的秘密武器
    多任务协程编程协程,又称微线程,纤程。英文名Coroutine。协程也是一种轻量级的多任务编程技术,它可以在同一个线程中实现多个任务的切换和调度。协程通过任务的暂停和恢复,避免了线程切换的开销并减少了锁的使用。协程常用于异步编程场景,比如网络编程和IO密集型任务。最大的优势就是协......
  • 用Python实现高效数据记录!Web自动化技术助你告别重复劳动!
    简介关键数据记录是Web自动化测试中的关键部分,它们提供了关于系统行为和执行过程的详细信息,有助于验证用例的正确性,排查问题和确保应用程序的质量。行为日志行为日志是一种用于记录系统或应用程序的操作和事件的技术。它的目的是为了跟踪和记录应用程序的执行过程,以便在需要时审......
  • Python - “人生苦短,我用Python”
      字符串的三种定义方式1、单引号定义法:name='人生苦短,我用Python'2、双引号定义法:name="人生苦短,我用Python"3、三引号定义法:name="""人生苦短,我用Python"""三引号定义法,和多行注释的写法一样,同样支持换行操作。使用变量接收它,它就是字符串;不使用变量接收它,就......
  • Python并发编程之进程间通信与线程间通信
    进程间通信与线程间通信【一】进程间通信(IPC)​ 进程间通信(Inter-ProcessCommunication,IPC)是指在不同进程之间进行数据交换和信息传递的机制。在多进程系统中,不同进程可能运行在不同的地址空间,因此需要一些特殊的方法来实现它们之间的通信。以下是一些常见的进程间通信的方法:......