# -*- coding: utf-8 -*- """Try thumbnail endpoint for stale images (full file 404s, thumbnail may survive).""" import json, ssl, pathlib, urllib.request BASE = "https://192.168.31.88:8042" CFG = pathlib.Path(r"C:\Users\admin\.zcode\cli\config.json") pat = json.loads(CFG.read_text(encoding="utf-8-sig"))["mcp"]["servers"]["sorb"]["env"]["SORB_PAT"] ctx = ssl._create_unverified_context() def get(url): req = urllib.request.Request(url, headers={"Authorization": "Bearer " + pat}) return urllib.request.urlopen(req, context=ctx, timeout=120) OUT = pathlib.Path(r"D:\腾讯\吕布\视频资产\后台补档") TASKS = [ (12858, "task12858_吕布三视图V4_戟尾细化_9041", "/media/images/4/thumbnail/generated/task-12858-0-*.thumbnail.webp"), (12857, "task12857_吕布三视图V3_束发修正_9039", None), (12848, "task12848_吕布三视图V2_9038", None), (12838, "task12838_吕布三视图V1_9037", None), ] # We don't know exact thumbnail hashes; try listing via task detail's thumbnail_url field for tid, base_name, _ in TASKS: d = json.loads(get(f"{BASE}/api/external/v1/tasks/{tid}").read().decode("utf-8")) thumb = d.get("thumbnail_url") print(tid, "thumbnail_url:", thumb) if not thumb: continue try: data = get(BASE + thumb).read() f = OUT / (base_name + ".webp") f.write_bytes(data) print(" saved thumb", f.name, len(data)) except Exception as e: print(" thumb FAIL", str(e)[:80])