94ee8ea297
移除了 llm tuner 适配器
83 lines
3.0 KiB
Python
83 lines
3.0 KiB
Python
import urllib.request
|
|
import json
|
|
|
|
# --- 配置 ---
|
|
REPO_OWNER = "AstrBotDevs"
|
|
REPO_NAME = "AstrBot"
|
|
START_ISSUE_NUMBER = 970
|
|
LABEL_TO_FIND = "plugin-publish"
|
|
OUTPUT_FILENAME = "plugin_publish_issues.txt"
|
|
ISSUE_STATE = "closed" # 只筛选状态为 closed 的 Issue
|
|
|
|
|
|
def fetch_and_format_issues(
|
|
repo_owner, repo_name, start_issue_number, label_name, output_file, issue_state
|
|
):
|
|
api_url = f"https://api.github.com/repos/{repo_owner}/{repo_name}/issues?state={issue_state}&labels={label_name}&sort=created&direction=asc&per_page=100"
|
|
headers = {"Accept": "application/vnd.github+json"}
|
|
found_issues = []
|
|
page = 1
|
|
|
|
while True:
|
|
request_url = f"{api_url}&page={page}"
|
|
request = urllib.request.Request(request_url, headers=headers)
|
|
try:
|
|
with urllib.request.urlopen(request) as response:
|
|
data = json.loads(response.read().decode("utf-8"))
|
|
if not data:
|
|
break # 没有更多 Issues 了
|
|
|
|
for issue in data:
|
|
issue_number = issue.get("number")
|
|
if issue_number is not None and issue_number >= start_issue_number:
|
|
title = issue.get("title", "No Title")
|
|
author = issue.get("user", {}).get("login", "Unknown")
|
|
found_issues.append(f"{title} by @{author} in #{issue_number}")
|
|
|
|
# 检查是否有下一页
|
|
if "Link" in response.headers:
|
|
links = response.headers["Link"].split(",")
|
|
next_page_exists = False
|
|
for link in links:
|
|
if 'rel="next"' in link:
|
|
next_page_exists = True
|
|
break
|
|
if not next_page_exists:
|
|
break
|
|
page += 1
|
|
else:
|
|
break # 没有 Link header,假设没有更多页了
|
|
|
|
except urllib.error.HTTPError as e:
|
|
print(f"HTTP Error: {e.code} - {e.reason}")
|
|
return
|
|
except urllib.error.URLError as e:
|
|
print(f"URL Error: {e.reason}")
|
|
return
|
|
except json.JSONDecodeError:
|
|
print("Error decoding JSON response.")
|
|
return
|
|
|
|
if found_issues:
|
|
with open(output_file, "w", encoding="utf-8") as f:
|
|
for line in found_issues:
|
|
f.write(line + "\n")
|
|
print(
|
|
f"已找到 {len(found_issues)} 个状态为 '{issue_state}',带有 '{label_name}' 标签且 Issue Number 大于等于 {start_issue_number} 的 Issues,并已保存到 '{output_file}'。"
|
|
)
|
|
else:
|
|
print(
|
|
f"未找到任何状态为 '{issue_state}',带有 '{label_name}' 标签且 Issue Number 大于等于 {start_issue_number} 的 Issues。"
|
|
)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
fetch_and_format_issues(
|
|
REPO_OWNER,
|
|
REPO_NAME,
|
|
START_ISSUE_NUMBER,
|
|
LABEL_TO_FIND,
|
|
OUTPUT_FILENAME,
|
|
ISSUE_STATE,
|
|
)
|