markdown文件中的外链图片上传到GitHub图床
import os
import re
import requests
from github import Github
TOKEN = ""
REPO_NAME = ""
REPO_OWNER = ""
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)
with open(file, "r", encoding='utf-8') as f:
content = f.read()
img_tags = re.findall(r"!\[.*?\]\((.*?)\)", content) + re.findall(r'<img.*?src="(.*?)".*?>', content)
for img_tag in img_tags:
print(img_tag)
if "https://raw.githubusercontent.com" in img_tag:
print("跳过")
continue
img_url = img_tag
response = requests.get(img_url)
img_data = response.content
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)
content = content.replace(img_tag, img_url)
with open(file, "w", encoding='utf-8') as f:
f.write(content)