新建Gitee仓库
- 仓库必须是
开源(所有人可见)
- 选择初始化
获取Gitee OpenAPI的access_token
在设置-安全设置-私人令牌-生成新令牌,令牌需要有projects权限,生成后保存好给到的access_token。
Python3环境与脚本配置变量的修改
import requests
import sys
import time
import random
import os
import base64
import json
# git commit的信息
message="图床"
# 刚刚获取到的私人令牌
access_token="XXXXXXXXX"
# gitee的用户名
owner="Tung7"
# 刚刚新建的仓库名
repo="pic-repo"
# 提交文件目标目录
dir="img"
base_url="https://gitee.com/api/v5/repos/"
filename=sys.argv[1]
filepath=sys.argv[2]
imgs=sys.argv[3:]
tmp="""{"access_token":"%s","content":"%s","message":"%s"}"""
arr=[]
hasF=False
for img in imgs:
file_ext = os.path.splitext(img)[-1]
newName="%s/%s_%s_%s" % (filename, filename,time.strftime("%Y%m%d%H%M%S", time.localtime()),random.randint(100000, 999999))
url=base_url+owner+"/"+repo+"/contents/"+dir+"/"+newName+file_ext
with open(img, ‘rb‘) as f:
encode_img = base64.b64encode(f.read())
img_base64 = encode_img.decode()
#print(‘data:image/{};base64,{}‘.format(file_ext[1:], img_base64))
headers={"Content-Type":"application/json;charset=UTF-8"}
data=tmp%(access_token, img_base64, message)
f.close()
try:
res=requests.post(url=url, headers=headers, data=data.encode(‘utf-8‘))
res.encoding = "utf-8"
resBody=json.loads(res.text)
arr.append(resBody[‘content‘][‘download_url‘])
except Exception as e:
print(e)
hasF=True
if (hasF):
print("Upload Failed:")
else:
print("Upload Success:")
for a in arr:
print(a)
Typora配置
- 取消勾选本地位置的图片规则
- 这样就不会自动上传图片,等到文章编辑好之后,再手动右键图片进行上传。
- 勾选网络位置的图片规则
- 会自动将网络位置的图片上传到图床
- 上传服务填写Custom Command
- 命令填写python脚本,并附带``${filename}
与
${filepath}`参数/usr/local/bin/python3 /Users/Tung/hexoblog/pyupload.py ${filename} ${filepath}
- 环境中可能有多种python环境,手动指定install了依赖包的那个环境即可