# -*- coding: utf-8 -*- """Sentence-5: Yuanmen arrow shot, three shots (辕门营地 9054, 全片最静最慢段).""" import json, ssl, pathlib, urllib.request, urllib.error 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() CHAR = {"source_type": "media_asset", "id": 9089, "asset_type": "image", "role": "reference_image"} BOW = {"source_type": "media_asset", "id": 9189, "asset_type": "image", "role": "reference_image"} HALBERD = {"source_type": "media_asset", "id": 9057, "asset_type": "image", "role": "reference_image"} SCENE = {"source_type": "media_asset", "id": 9054, "asset_type": "image", "role": "reference_image"} STYLE = "3D超写实三国历史正剧CG,UE5.2全局光线追踪,3D动画CG质感非真人实拍,日间柔和顶光,冷青阴影+暖金高光,画面通透无死黑,浅景深、胶片颗粒、边缘暗角,16:9,无文字无水印无旗帜。" # S5-1 远景:辕门下吕布张弓而立,两军分列两侧对峙 STANCE = """【锁死吕布】吕布按参考图1:黑高束发、金色凤翅冠、双红翎、兽面吞金甲、红披风、腰部干净高级灰皮毛裙边;弓按参考图2:汉代角弓、玄黑弓身、牛角贴面。参考图只锁造型,构图全新。 【画面】辕门大远景:木构辕门立于画面中央纵深,吕布立于辕门下正中,侧身张弓,弓开如满月,目光锁定远处;左右两侧远方各有一支军阵分列对峙(只见玄色无字旗与兵戈如林,不见面部),整个画面安静、克制、空气似凝滞。固定机位微缓推。""" + STYLE # S5-2 特写:弦满、箭离弦,跟箭高速 RELEASE = """【锁死细节】弓与箭严格按参考图1:汉代角弓、玄黑弓身、牛角贴面、桑木弓弭,箭为黑杆铁镞、三片尾羽;拉弓的手为戴黑色皮质护腕的手臂特写,不露面部。参考图只锁兵器形制,构图全新。 【镜头】微距特写:弓弦已拉至满月,弦上的铁镞箭寒光一线;下一瞬弦松,箭离弦而出,弓弦震颤成虚影,箭只留下向画面深处飞去的残影与空气涡痕;浅景深,背景营帐虚化为暖金光斑。""" + STYLE # S5-3 特写:箭钉画戟小枝,戟枝微颤,两军静默 HIT = """【锁死兵器】方天画戟严格按参考图1:月牙双刃+中央枪尖+戟尾配重、红色戟缨缠绕杆身;一支黑杆铁镞、三片尾羽的箭(按参考图2箭矢)。 【镜头】微距特写:一支铁镞箭自画面深处飞来,正钉在画戟月牙小枝与戟杆交汇处,箭簇入木三分,戟枝微微震颤,红色戟缨随之轻晃;戟被插在辕门空地木架/地面,背景两军营帐与旗帜虚化,空气静止,一粒尘土缓缓落下。固定机位,急停收。""" + STYLE def submit(key, prompt, refs): payload = { "client_namespace": "lubu_pv_board", "idempotency_key": key, "project_id": 30, "model_config_id": 62, "task_type": "image", "references": refs, "parameters": {"prompt": prompt, "aspect_ratio": "16:9", "image_size": "2K", "output_format": "png", "watermark": False}, } data = json.dumps(payload, ensure_ascii=False).encode("utf-8") req = urllib.request.Request(BASE + "/api/external/v1/tasks", data=data, method="POST", headers={"Authorization": "Bearer " + pat, "Content-Type": "application/json"}) try: with urllib.request.urlopen(req, context=ctx, timeout=120) as r: o = json.loads(r.read().decode("utf-8")) print(key, "task_id=", o.get("task", {}).get("id"), "status=", o.get("task", {}).get("status")) except urllib.error.HTTPError as e: print(key, "HTTP", e.code, e.read().decode("utf-8")[:500]) submit("lubu_s5_stance_20261028_v1", STANCE, [CHAR, BOW, SCENE]) submit("lubu_s5_release_20261028_v1", RELEASE, [BOW, SCENE]) submit("lubu_s5_hit_20261028_v1", HIT, [HALBERD, BOW, SCENE])