# -*- coding: utf-8 -*- r'''列出两个平台发行版的全部附件(含 ID),并试删一个看接口通不通。''' from __future__ import annotations import json import sys import urllib.error import urllib.request from collections import defaultdict from pathlib import Path ROOT = Path(r"C:\Users\shu\Desktop\deepseekagent\LanRemote") GT = (ROOT / "_build" / ".gitee_token").read_text(encoding="utf-8").strip() ET = (Path.home() / ".ykxmz" / "ezhub_token").read_text( encoding="utf-8").strip() TAG = "v1.8.0" def get(url: str, token: str, kind: str): headers = {"User-Agent": "ykxmz"} if kind == "gitee": sep = "&" if "?" in url else "?" url = url + sep + "access_token=" + token else: headers["Authorization"] = "token " + token with urllib.request.urlopen( urllib.request.Request(url, headers=headers), timeout=60) as r: return json.loads(r.read().decode("utf-8", "replace")) def dump(name: str, url: str, token: str, kind: str) -> None: print(" ═══ %s ═══" % name) try: rel = get(url, token, kind) except Exception as exc: # noqa: BLE001 print(" 查询失败: %s" % exc) return rid = rel.get("id") print(" release id = %s" % rid) assets = (rel.get("assets") or rel.get("attach_files") or []) print(" 附件 %d 个:" % len(assets)) groups = defaultdict(list) for a in assets: aname = a.get("name") or a.get("filename") or "?" aid = a.get("id") when = a.get("created_at") or a.get("created_at") or "" size = a.get("size") or 0 groups[aname].append((aid, when, size)) print(" id=%-10s %-32s %8.2f MB %s" % (aid, aname, size / 1024 / 1024, str(when)[:19])) print() print(" 重复情况:") for aname, items in sorted(groups.items()): if len(items) > 1: print(" %-32s %d 份" % (aname, len(items))) print() def main() -> int: dump("Gitee", "https://gitee.com/api/v5/repos/xmz7891/ykxmz/releases/tags/" + TAG, GT, "gitee") dump("EzHub", "https://git.261826.xyz/api/v1/repos/xmz/ykxmz/releases/tags/" + TAG, ET, "gitea") return 0 if __name__ == "__main__": sys.exit(main())