【Python】SM.MS作为免费图床上传图片

注意:因为是国外的服务,有时候不是很稳定,上传和删除速度都有点慢

  1. 登陆SM.MS官网注册账号,进入Dashboard

在这里插入图片描述

  1. 生成并复制Secret Token

在这里插入图片描述

  1. sm.ms的API文档写的很简洁,直接参考API发送request请求即可
  2. 我封装了几个满足我需求的指令,可以参考下python的写法
    • upload(): 提供图片路径即可直接上传,返回图片url,格式例如:https://s2.loli.net/2022/03/24/rvgPMndtU3QzZ8w.png
    • deleteHistory(): 删除之前所有的存储(不知道是网络的原因还是什么,这样一个一个get请求删会很慢)
    • 因为国外的服务有时候不很稳定,这里设置了5s的超时时间,记得在主函数里捕捉下requests.exceptions.RequestException异常
class SMMS(object):
    def __init__(self):
        self.headers = {'Authorization': '[Secret Token]'}

    def isDiskFull(self):
        url = 'https://sm.ms/api/v2/profile'
        res = requests.post(url, headers=self.headers, timeout=5).json()
        if res["disk_usage_raw"] > 0.9 * res["disk_limit_raw"]:
            return True

    def upload(self, filepath):
        files = {'smfile': open(filepath, 'rb')}
        url = 'https://sm.ms/api/v2/upload'
        res = requests.post(url, files=files, headers=self.headers, timeout=5).json()
        # print(json.dumps(res, indent=4))
        return res['data']['url']

    def getHistory(self):
        url = 'https://sm.ms/api/v2/upload_history'
        res = requests.get(url, headers=self.headers, timeout=5).json()
        return res

    def deleteHistory(self):
        history = self.getHistory()
        lastTime = time.time()
        for item in history["data"]:
            if item["created_at"] < lastTime:
                url = 'https://sm.ms/api/v2/delete/{}'.format(item["hash"])
                res = requests.get(url, headers=self.headers, timeout=5).json()
        print("History deleted!")
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

doubleZ0108

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值