# -*- coding: utf-8 -*- """Download + save t1338 series scenes (13358-13361) to library and local dir.""" 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() OUT = pathlib.Path(r"D:\腾讯\吕布\吕布视频资产\t1338场景板") OUT.mkdir(parents=True, exist_ok=True) TASKS = [ (13358, "T1_雪原古道_风雪.png", "吕布三视图系列_场景_T1_雪原古道"), (13359, "T2_关前校场_晨光.png", "吕布三视图系列_场景_T2_关前校场"), (13360, "T3_烽火战场_黄昏.png", "吕布三视图系列_场景_T3_烽火战场"), (13361, "T4_暮色河岸_大江.png", "吕布三视图系列_场景_T4_暮色河岸"), ] for tid, fname, libname in TASKS: req = urllib.request.Request(BASE + "/api/external/v1/tasks/" + str(tid), headers={"Authorization": "Bearer " + pat}) o = json.loads(urllib.request.urlopen(req, context=ctx, timeout=60).read().decode("utf-8")) url = o.get("image_url") full = url if url.startswith("http") else BASE + url req = urllib.request.Request(full, headers={"Authorization": "Bearer " + pat}) data = urllib.request.urlopen(req, context=ctx, timeout=120).read() path = OUT / fname path.write_bytes(data) print("saved", path.name, len(data)) # save to library outs = [it for it in (o.get("outputs") or []) if isinstance(it, dict)] if outs and not outs[0].get("media_asset_id"): oid = outs[0].get("id") payload = json.dumps({"resource_name": libname}, ensure_ascii=False).encode("utf-8") req = urllib.request.Request(BASE + "/api/external/v1/tasks/" + str(tid) + "/outputs/" + str(oid) + "/save", data=payload, method="POST", headers={"Authorization": "Bearer " + pat, "Content-Type": "application/json"}) try: with urllib.request.urlopen(req, context=ctx, timeout=60) as r: o2 = json.loads(r.read().decode("utf-8")) outs2 = o2.get("outputs") or [] print(" library media_asset_id=", outs2[0].get("media_asset_id") if outs2 else None) except urllib.error.HTTPError as e: print(" save HTTP", e.code, e.read().decode("utf-8")[:200]) elif outs: print(" already in library:", outs[0].get("media_asset_id"))