Files
AstrBot/dump_plugins.py
Soulter 94ee8ea297 feat: 支持多轮次工具调用并且存储到数据库
移除了 llm tuner 适配器
2025-06-29 14:27:00 +08:00

83 lines
3.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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,
)