markdown文件中的外链图片上传到GitHub图床

markdown文件中的外链图片上传到GitHub图床

python 复制代码
import os
import re
import requests
from github import Github


# 获取GitHub令牌和图床存储库信息
TOKEN = ""
REPO_NAME = "" # 仓库名:如img-bed
REPO_OWNER = "" # 拥有者名称:如yijunquan

# 创建PyGithub对象
g = Github(TOKEN)
repo = g.get_user(REPO_OWNER).get_repo(REPO_NAME)

# 指定目录路径
path = "."

# 获取目录下所有文件的名称
file_names = [f for f in os.listdir(path) if os.path.isfile(os.path.join(path, f))]
# 打印输出所有文件的名称
for name in file_names:
    if ".md" not in name:
        continue
    if path == '.':
        file = name
    else:
        file = path + name

    print("文件: " + file)
    # 读取Markdown文件
    with open(file, "r", encoding='utf-8') as f:
        content = f.read()

    # 查找Markdown文件中的所有图片标签
    img_tags = re.findall(r"!\[.*?\]\((.*?)\)", content) + re.findall(r'<img.*?src="(.*?)".*?>', content)


    # 遍历每个图片标签,上传到GitHub图床并替换Markdown文件中的链接
    for img_tag in img_tags:

        print(img_tag)
        if "https://raw.githubusercontent.com" in img_tag:
            print("跳过")
            continue
        # 获取图片URL
        img_url = img_tag

        # 下载图片数据
        response = requests.get(img_url)
        img_data = response.content

        # 上传图片到GitHub图床
        img_name = os.path.basename(img_url)
        if img_name[0:3] == "%20":
            img_name = img_name[3:]
        img_path = f"img13/{img_name}"
        img_file = repo.create_file(img_path, f"Upload image {img_name}", img_data)
        img_url = "https://raw.githubusercontent.com/yijunquan-afk/img-bed-1/main/" + img_path
        print("替换为:"+ img_url)
        # 替换Markdown文件中的链接
        content = content.replace(img_tag, img_url)

    # 更新Markdown文件
    with open(file, "w", encoding='utf-8') as f:
        f.write(content)
相关推荐
YuePeng1 小时前
我用 30 行 Java 注解,做出了别人花三周写的管理后台,还顺手接入了 DeepSeek
后端·github
无心水4 小时前
【Hermes:MCP 与工具实战】28、GitHub MCP 深度实战:PR 审查、Issue、自动汇报全搞定
人工智能·github·issue·openclaw·养龙虾·hermes·honcho
逛逛GitHub4 小时前
GitHub 上狂揽 1.8 万 Star!开源平替的 Claude Design。
github
shisanjin1235 小时前
关于 IDEA2025 版本中对 git 的操作与使用
git·github·idea
希望未来不会秃5 小时前
【Git实战】如何将本地已有项目关联并推送到指定的远程仓库(保姆级教程)
git·gitee·github
- J°雾5 小时前
GitNexus 安装配置 + 网页版 GUI 使用教程(Windows 环境)
windows·开源·github·知识图谱
小橙讲编程5 小时前
40+kStar 的多智能体编排引擎 Ruflo 深度技术解析:Claude Code 如何从单兵作战进化为 AI 蜂群指挥系统
开源·github
bu_shuo7 小时前
hexo 上传到github命令报错
github
阿里嘎多学长7 小时前
2026-05-04 GitHub 热点项目精选
开发语言·程序员·github·代码托管
WindrunnerMax8 小时前
基于 Markdown-It 的无序列表折叠插件
前端·javascript·github