Happy New Year!

使用Python脚本通过typora上传图片到github打造免费私人图床

gitee上传文件api

https://gitee.com/api/v5/swagger#/postV5ReposOwnerRepoContentsPath

github上传文件api

https://developer.github.com/v3/repos/contents/#create-or-update-file-contents

 

这个网址讲了怎么申请token和使用这个api。

结合typora可以非常方便的利用GitHub搭建一个私人图床。

之前有很多教程是讲的怎么上传到七牛云阿里云等,但是还是不如这个方便而且也非常稳定。

所有xxx的地方都需要替换成你的

import argparse
import base64
import random
import string
import sys
import requests
import json
from urllib.parse import unquote


url = 'https://api.github.com/repos/xxx_username_xxx/xxx_仓库名——xxx/contents/img/blog/'
headers = {'content-type': 'application/json', 'Authorization': 'Bearer xxx_your_token_xxx'}
data = {
"message": "",
"committer": {
"name": "xxx",
"email": "xxx"
},
"content": ""
}
image_name = ''
if len(sys.argv) == 1:
sys.argv.append('--help')
parser = argparse.ArgumentParser()
parser.add_argument('-s', '--source', type=str, nargs='+', help="必须传入文件名参数", required=True)
args = parser.parse_args()
image_list = args.source


def get_data(img):
with open(img, "rb") as f:
file = f.read()
encode_f = base64.b64encode(file)
data['content'] = str(encode_f, encoding="utf-8")
data['message'] = image_name
return data


if __name__ == '__main__':
for img in image_list:
image_name = img.split("/")[-1]
if len(image_name) > 50:
image_name = ''.join(random.sample(string.ascii_letters + string.digits, 20)) \
+ '.' + image_name.split(".")[-1]
data = get_data(img)
req = requests.put(url=url + image_name, data=json.dumps(data), headers=headers)
print(unquote(req.json()['content']['download_url'], 'utf-8'))

 


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TS1OnLZB-1593240882443)(https://dongzhonghua.github.io/img/blog/image-20200627144920370.png)]

自定义命令填入 python3 xxx/upload.py -s

-s后面typora会帮你自动填入本地图片路径,使用时直接拖拽图片到typora就自动上传了。
————————————————
版权声明:本文为CSDN博主「柠檬好酸啊」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/it_zhonghua/article/details/106982770

posted @ 2022-05-09 10:37  义美-小义  阅读(213)  评论(0编辑  收藏  举报
返回顶部小火箭
世界很公平,想要最好,就一定得付出!
x
github主页