本文目标:之前曾经写过一篇白嫖bilibili图床 用于白嫖B站的图片外链作为图床使用,然而很可惜,逼站的图床如今已经失效了(逼站修复了这一bug)故而只能重新找寻其他图床了。
在上一篇文章中我们提到用github action将仓库同步到coding的方法,故而本文的图床也将用到前文内容,利用coding作为图床的空间,来实现免费图床。
目标:一如之前的bilibili一文,依然是需要在typora中支持从剪贴板粘贴进编辑器自动上传到图床。
一、直接上脚本 在本文中,博主将脚本命名为pic2gh.py,各位可以自凭喜好随意命名
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 import requestsimport base64import jsonimport uuidimport datetimeimport osimport sys ext = "" os.system('cp "%s" /path/pic2gh_cache' % sys.argv[1 ])def read_dir (): global extp y t h o n path = "/path/pic2gh_cache" files = os.listdir(path) for file in files: if not os.path.isdir(file): ext = os.path.splitext(file)[1 ] with open(path + "/" + file, 'rb' ) as f: fdata_tmp = file_base64(f.read()) f.close() return fdata_tmp def file_base64 (data ): data_b64 = base64.b64encode(data).decode() return data_b64def upload_file (file_data ): global ext file_name = sys.argv[1 ].split('/' )[-1 ] token = "ghp_ydDXXXXXXXXXXXXXXXXXRW2" curr_time = datetime.datetime.now() path = curr_time.strftime("/path_at_github" ) url = "https://api.github.com/repos/[user]/[repo]/contents/" + path + "/" + file_name headers = {"Authorization" : "token " + token} content = file_data data = { "message" : "tc upload pictures" , "content" : content } data = json.dumps(data) req = requests.put(url=url, data=data, headers=headers) req.encoding = "utf-8" re_data = json.loads(req.text) print("https://[user_name].coding.net/t/[user]/p/[project]/d/[repo]/git/raw/main/" + path + "/" + file_name) if __name__ == '__main__' : fdata = read_dir() upload_file(fdata) os.system('rm -rf /path/pic2gh_cache/*' )
目标实现: 脚本的直接使用 在终端使用python 3 /path/to/pic2gh.py /path/to/picture/whitch/need/upload
即可将所需上传的图片上传到github,并自动同步到coding,获取到coding的图片外链了(由于github actions执行需要时间,这个外链可能将在1~2分钟之后才能生效)。
typora中启用脚本 将python3 /path/to/pic2gh.py
复制到Typora的偏好设置
→图象
→上传服务设定
的Custom Command
选项的命令一行中去。
成果检验