# -*- coding: utf-8 -*- """Last channel: provider TOS URLs from task output provider_metadata (may still be signed & valid).""" 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, auth=True): req = urllib.request.Request(url) if auth: req.add_header("Authorization", "Bearer " + pat) return urllib.request.urlopen(req, context=ctx, timeout=180) OUT = pathlib.Path(r"D:\腾讯\吕布\视频资产\后台补档") for tid, name in [(12858, "吕布三视图V4_戟尾细化"), (12857, "吕布三视图V3_束发修正"), (12848, "吕布三视图V2"), (12838, "吕布三视图V1")]: d = json.loads(get(f"{BASE}/api/external/v1/tasks/{tid}").read().decode("utf-8")) for out in (d.get("outputs") or []): if not isinstance(out, dict): continue pm = (out.get("provider_metadata") or {}).get("file_metadata") or {} purl = pm.get("provider_image_url") if not purl: print(tid, "no provider url"); continue try: data = get(purl, auth=False).read() f = OUT / f"task{tid}_{name}.png" f.write_bytes(data) print("saved", f.name, len(data)) except Exception as e: print(tid, "provider FAIL", str(e)[:100])