# -*- coding: utf-8 -*- """Replace S01/S03/S08 with v3 anchor images (task 13241/13249/13250), backup v1.""" import json, ssl, pathlib, urllib.request, shutil 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:\腾讯\吕布\视频资产\全脚本空场景") BAK = OUT / "v1_backup" BAK.mkdir(exist_ok=True) TASKS = [ (13241, "S01_虎牢关外古道_冬晨.png", "S01_虎牢关外古道_冬晨_v3.png"), (13249, "S03_虎牢关下战场_正午.png", "S03_虎牢关下战场_正午_v3.png"), (13250, "S08_下邳雨夜城墙_夜雨.png", "S08_下邳雨夜城墙_夜雨_v3.png"), ] for tid, replace_name, v3_name 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") if not url: print(tid, "no image_url, status=", o.get("status")) continue 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() old = OUT / replace_name if old.exists(): shutil.copy2(old, BAK / replace_name) (OUT / v3_name).write_bytes(data) (OUT / replace_name).write_bytes(data) print(tid, "->", v3_name, len(data), "| canonical replaced:", replace_name)