python 通过 github api 上传图片,实现免费的图床

简介: python 通过 github api 上传图片,实现免费的图床

最近小牛一直写文章时使用的免费图床,不能用了,毕竟不是自己的,感觉老这样换图床,太麻烦了。 那只好自己写了一个利用github api把 github 当成一个免费的图床使用的脚本。

费话不多说,直接上脚本

main.py

import requests
import base64
import json
import uuid
import datetime
import os
ext = ""
# 从文件夹下 读取文件
def read_dir():
    global ext
    path = "D:/GiteeProjects/uploadPicture/upload"  # 指定的文件夹目录(自己随意) todo
    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: # rb 二进制 读取
                fdata_tmp = file_base64(f.read())
                f.close()
                return fdata_tmp # 只取第一个 文件,太懒了,就默认第一个
# 将文件转换为base64编码,github上传文件必须将文件以base64格式上传
def file_base64(data):
    data_b64 = base64.b64encode(data).decode()
    return data_b64
# 上传文件
def upload_file(file_data):
    global ext
    file_name = str(uuid.uuid1()) + ext  # 文件名 随机生成
    # token = "[token]" todo
    # url = "https://api.github.com/repos/[user]/[repo]/contents/[path]/"+file_name  # 用户名、库名、路径
    # headers = {"Authorization": "token " + token}
    token = "ghp_rOTMBxxxxxxxxxxxxxxxxxgu4dSvzi" ## 自行去github生成token,不懂得文章最好会写
    curr_time = datetime.datetime.now()
    path = curr_time.strftime("%Y-%m-%d")
    url = "https://api.github.com/repos/xxxx/MyxxxxBed/contents/" + path + "/" + file_name  # 用户名、库名、路径
    headers = {"Authorization": "token " + token} # github token 的规则 在2021-9-29 变调了,注意官方文档的说明哦
    content = file_data
    data = {
        "message": "zj 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://cdn.jsdelivr.net/gh/[user]/[repo]/[path]" + file_name)
    # !======= 千万注意路径,别写错了 ,# 在国内无法访问文件图片啊,太慢,有时候直接无法访问,使用CDN访问,能有效解决这个问题,关键jsdelivr cdn 还是免费的,不能浪费哈
if __name__ == '__main__':
    # 从文件夹 读取文件
    fdata = read_dir()
    upload_file(fdata)

这样小牛花了10min 一个简单的脚本就写好了,由于时间仓促代码没有细细打磨,但基础功优雅地实现了,希望大家多多支持,关注一下最好啦

如果觉得文章对你有帮助,欢迎关注微信公众号:小牛呼噜噜

去github生成token

大家可以看看笔者 之前写过的一篇详细文章

使用说明

由于使用的python 大家得有python 环境

D:/GiteeProjects/uploadPicture/upload 文件存放目录得和 main.py 在同一个 目录就行

效果展示

复制这个链接,打开浏览器:

好吧,图片其实就是这个狗子--



本篇文章到这里就结束啦,如果喜欢的话,多多支持,欢迎关注!

相关文章
|
26天前
PicGo——利用PicGo和GitHub搭建免费图床提供给Typecho使用
PicGo——利用PicGo和GitHub搭建免费图床提供给Typecho使用
11 0
|
9天前
|
JSON API 数据格式
python 使用 Stable Diffusion API 生成图片示例
本文提供了一个使用Python调用Stable Diffusion API生成图片的示例程序,包括启动API设置、发送POST请求、保存生成的图片和JSON数据,以及如何通过API调用特定模型的说明。
python 使用 Stable Diffusion API 生成图片示例
|
10天前
|
数据采集 编解码 算法
Github | 推荐一个Python脚本集合项目
Github | 推荐一个Python脚本集合项目
|
17天前
|
SQL 关系型数据库 MySQL
Python DB-API
【8月更文挑战第22天】
26 11
|
11天前
|
算法 数据处理 数据安全/隐私保护
|
13天前
|
API 开发工具 网络架构
【Azure Developer】如何通过Azure Portal快速获取到对应操作的API并转换为Python代码
【Azure Developer】如何通过Azure Portal快速获取到对应操作的API并转换为Python代码
|
16天前
|
数据采集 数据可视化 Ruby
GitHub星标破万!Python学习教程(超详细),真的太强了!
Python 是一门初学者友好的编程语言,想要完全掌握它,你不必花上太多的时间和精力。 Python 的设计哲学之一就是简单易学,体现在两个方面: 1. 语法简洁明了:相对 Ruby 和 Perl,它的语法特性不多不少,大多数都很简单直接,不玩儿玄学。 2. 切入点很多:Python 可以让你可以做很多事情,科学计算和数据分析、爬虫、Web 网站、游戏、命令行实用工具等等等等,总有一个是你感兴趣并且愿意投入时间的。
|
23天前
|
弹性计算 API 开发工具
揭秘Python与阿里云API的神秘邂逅!流式处理的魔法之旅,一场颠覆想象的技术盛宴!
【8月更文挑战第15天】在数字世界的广阔舞台上,Python与阿里云API的相遇,就像是一场命中注定的邂逅。它们携手共舞,为我们带来了流式处理的魔法之旅。本文将揭开这场神秘邂逅的面纱,带你领略Python与阿里云API之间的奇妙互动。让我们一起踏上这场颠覆想象的技术盛宴,探索流式处理的无限可能!
69 7
|
23天前
|
数据采集 数据可视化 算法
GitHub星标68K!Python数据分析入门手册带你从数据获取到可视化
Python作为一门优秀的编程语言,近年来受到很多编程爱好者的青睐。一是因为Python本身具有简捷优美、易学易用的特点;二是由于互联网的飞速发展,我们正迎来大数据的时代,而Python 无论是在数据的采集与处理方面,还是在数据分析与可视化方面都有独特的优势。我们可以利用 Python 便捷地开展与数据相关的项目,以很低的学习成本快速完成项目的研究。
|
23天前
|
程序员 数据库连接 API
分享一个解决 EF 性能低的思路,通过 Python 访问心跳侦测 API 保持 EF 在线
分享一个解决 EF 性能低的思路,通过 Python 访问心跳侦测 API 保持 EF 在线
下一篇
DDNS