mirror of
https://gitee.com/xmz7891/ykxmz.git
synced 2026-10-19 07:10:44 +00:00
修 Gitee 附件清理:assets 字段没 id,要用 attach_files 接口
Gitee 的坑:GET /releases/{id} 返回的 assets 里
**只有 name 和 download_url,没有 id**,
照着它删是删不掉的(之前静默失败,附件一路堆到 11 个)。
必须换接口才拿得到 id:
GET /releases/{id}/attach_files -> [{id, name, size}]
DELETE /releases/{id}/attach_files/{id}
已清理:Gitee 11 -> 5 个(含 2 个自动生成的源码包),
EzHub 5 -> 3 个。清理动作也加了重试(网络会抖)。
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
# -*- 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())
|
||||
Reference in New Issue
Block a user