diff --git a/build/authors.py b/build/authors.py new file mode 100644 index 00000000..96da208d --- /dev/null +++ b/build/authors.py @@ -0,0 +1,131 @@ +import os +import sys +import json + +# 指定要处理的文件夹路径 +# folder_path = r"C:\Users\ThinkPadE16\Documents\GitHub\bettergi-scripts-list\repo\pathing" # 修改为你的路径,如 r"C:\Users\..." 或 "./jsons" + +# 作者重命名映射:旧名 -> 新名 +author_rename = { + "起个名字好难": "起个名字好难的喵", +} + +# 作者映射表:用于自动填入 links +author_links = { + "秋云": "https://github.com/physligl", + "起个名字好难的喵": "https://github.com/MisakaAldrich", + "火山": "https://github.com/RRRR623", + "mno": "https://github.com/Bedrockx", + "汐": "https://github.com/jiegedabaobei", + "Tool_tingsu": "https://github.com/Tooltingsu", + "吉吉喵": "https://github.com/JJMdzh", + "曦": "https://github.com/cx05121", + "ddaodan": "https://github.com/ddaodan", + "LCB-茶包": "https://github.com/kaedelcb", + "蜜柑魚": "https://github.com/this-Fish", + "彩虹QQ人":"https://github.com/KRdingsan", + "mfkvfhpdx": "https://github.com/mfkvfhpdx", + "提瓦特钓鱼玳师": "https://github.com/Hijiwos", + "柒叶子": "https://github.com/5117600049", + "不瘦五十斤不改名": "https://github.com/PanZic", + "½": "https://github.com/Traveler07", + "Patrick-Ze (AyakaMain)": "https://github.com/Patrick-Ze", + "风埠": "https://github.com/jhkif", + "jbcaaa":"https://github.com/jbcaaa", + "johsang":"https://github.com/johsang", + "寒烟": "https://github.com/214-hanyan", + "灰林鸮": "https://github.com/Strix-nivicolum", + "Tim": "https://github.com/Limint", + "花见木易": "https://github.com/Flower-MUYi" +} + +# 获取命令行参数 +if len(sys.argv) < 2: + print("❌ 请提供要处理的目录路径,例如:") + print(" python authors.py D:\GitHub\bettergi-scripts-list\repo\pathing") + sys.exit(1) + +folder_path = sys.argv[1] + +if not os.path.exists(folder_path): + print(f"❌ 路径不存在:{folder_path}") + sys.exit(1) + +print(f"🚀 启动,递归处理文件夹:{folder_path}") + +count_total = 0 +count_modified = 0 + +for root, dirs, files in os.walk(folder_path): + for filename in files: + if filename.endswith(".json"): + count_total += 1 + file_path = os.path.join(root, filename) + print(f"\n🔍 正在处理:{file_path}") + + try: + with open(file_path, "r", encoding="utf-8") as f: + data = json.load(f) + except Exception as e: + print(f"❌ JSON 解析失败:{e}") + continue + + info = data.get("info") + if not isinstance(info, dict): + print("⚠️ 缺少 info 字段或格式错误") + continue + + author_field = info.get("author") + if author_field is None: + print("⚠️ 缺少 author 字段") + continue + + modified = False + + # 字符串情况(含单人或 & 多人) + if isinstance(author_field, str): + names = [name.strip() for name in author_field.split("&")] + new_authors = [] + for name in names: + # 重命名处理 + new_name = author_rename.get(name, name) + author_obj = {"name": new_name} + if new_name in author_links: + author_obj["links"] = author_links[new_name] + new_authors.append(author_obj) + data["info"]["authors"] = new_authors + modified = True + print("✅ 替换字符串为结构化 authors") + + # 已是结构化数组 + elif isinstance(author_field, list): + for author_obj in author_field: + if not isinstance(author_obj, dict): + continue + name = author_obj.get("name") + if not name: + continue + # 重命名处理 + new_name = author_rename.get(name, name) + if name != new_name: + author_obj["name"] = new_name + modified = True + print(f"📝 重命名作者:{name} → {new_name}") + + # 更新链接 + if new_name in author_links: + new_link = author_links[new_name] + if author_obj.get("links") != new_link: + author_obj["links"] = new_link + modified = True + print(f"🔧 更新链接:{new_name} → {new_link}") + + if modified: + with open(file_path, "w", encoding="utf-8") as f: + json.dump(data, f, ensure_ascii=False, indent=2) + count_modified += 1 + print("✅ 文件已保存") + else: + print("⏭️ 无需修改") + +print(f"\n🎉 全部完成:共检查 {count_total} 个文件,修改了 {count_modified} 个文件") \ No newline at end of file