From 7a86847b3455921414354a99718a1459a3feb26d Mon Sep 17 00:00:00 2001 From: Yaosanqi137 <99163721+Yaosanqi137@users.noreply.github.com> Date: Mon, 1 Dec 2025 20:40:05 +0800 Subject: [PATCH] Create update_members.py --- img/update_members.py | 77 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 img/update_members.py diff --git a/img/update_members.py b/img/update_members.py new file mode 100644 index 0000000..e7c850e --- /dev/null +++ b/img/update_members.py @@ -0,0 +1,77 @@ +import os +import requests +import re + +# 配置部分 +ORG_NAME = os.environ['ORG_NAME'] # 从环境变量获取组织名 +TOKEN = os.environ['GH_TOKEN'] +README_PATH = "profile/README.md" # 你的 README 路径,根据实际情况调整 + +def get_members(): + url = f"https://api.github.com/orgs/{ORG_NAME}/members" + headers = { + "Authorization": f"token {TOKEN}", + "Accept": "application/vnd.github.v3+json" + } + members = [] + page = 1 + + while True: + # 获取所有分页的成员 + response = requests.get(f"{url}?per_page=100&page={page}", headers=headers) + if response.status_code != 200: + print(f"Error fetching members: {response.text}") + break + + data = response.json() + if not data: + break + + members.extend(data) + page += 1 + + return members + +def generate_html(members): + # 生成类似 contributors-readme-action 的圆形头像表格/列表 + html = '
\n' + + for member in members: + login = member['login'] + avatar = member['avatar_url'] + profile = member['html_url'] + + # 样式:圆形头像,宽度 50px,带链接 + html += f''' + + {login} + ''' + + html += '\n
' + return html + +def update_readme(html_content): + if not os.path.exists(README_PATH): + print(f"README not found at {README_PATH}") + return + + with open(README_PATH, 'r', encoding='utf-8') as f: + content = f.read() + + # 使用正则替换标记之间的内容 + pattern = r'()(.*?)()' + replacement = f'\\1\n{html_content}\n\\3' + + new_content = re.sub(pattern, replacement, content, flags=re.DOTALL) + + with open(README_PATH, 'w', encoding='utf-8') as f: + f.write(new_content) + +if __name__ == "__main__": + print(f"Fetching members for {ORG_NAME}...") + members = get_members() + print(f"Found {len(members)} members.") + + html = generate_html(members) + update_readme(html) + print("README updated successfully.")