import json
from pathlib import Path
CP = Path("/Users/manta/Documents/Projects/TheRoad-I1/projects/b0ad5c18-5140-4022-a2b0-805de0e5a385/checkpoints/episodes/0d30302a-51c8-4ac9-98e2-6cd9180512bf")
shots = json.loads((CP / "shot_staging" / "manifest.json").read_text())["data"]["shots"]
for sh in shots:
    if (sh.get("scene_index"), sh.get("shot_index")) != (2, 4):
        continue
    print("framing:", sh.get("framing_scale"))
    print("camera_direction:", str(sh.get("camera_direction"))[:200])
    for a in sh.get("character_angles") or []:
        print("angle:", json.dumps(a, ensure_ascii=False)[:200])
    fsc = sh.get("frame_spatial_contract") or {}
    for c in fsc.get("constraints") or []:
        print("fsc:", json.dumps({k: c.get(k) for k in ("target_kind","target_id","screen_zone","depth_plane","gesture_action")}, ensure_ascii=False))
# t2i
sd = json.loads((CP / "scene_detail" / "manifest.json").read_text())["data"]
def find(o):
    if isinstance(o, dict):
        if o.get("scene_index") == 2 and o.get("shot_index") == 4:
            yield o
        for v in o.values():
            yield from find(v)
    elif isinstance(o, list):
        for v in o:
            yield from find(v)
for hit in find(sd):
    t = hit.get("t2i_prompt") or (hit.get("variations") or [{}])[0].get("t2i_prompt") if isinstance(hit, dict) else None
    if t:
        print("\n[t2i]", t[:400])
        break
