使用Python腳本通過typora上傳圖片到github打造免費私人圖牀

gitee上傳文件api

github上傳文件api

這個網址講了怎麼申請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就自動上傳了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章