import json, re
def r1(x): return round(x*10)/10
sc = json.load(open("小说2/凡骨问长生-outline/凡骨问长生-script.json",encoding="utf-8"))
ep6 = next(e for e in sc["episodes"] if e["ep"]==6)
fl = ep6["scenes"][0]["flow"]
for j in range(26,30):
    b = fl[j-1]
    isline = isinstance(b.get("line"), str)
    secs = r1(len(re.sub(r"\s+","",b.get("line") or ""))/4.5) if isline else 2.5
    print("script b%d %s secs=%.2f %s" % (j, "line" if isline else "act", secs, (b.get("line") or b.get("action"))[:18]))
seed = json.load(open("小说2/storyboard-work/ep-06-seed.json",encoding="utf-8"))
for b in seed["seedScenes"][0]["beats"]:
    if 26 <= b["n"] <= 29:
        print("seed b%d %s secs=%r %s" % (b["n"], b.get("kind"), b.get("seconds"), b.get("text")[:18]))
print("--- ep02/ep07 plan vs file detail ---")
for ep in [2,7]:
    sp = {s["seg"]: s for s in json.load(open("小说2/storyboard-work/ep-%02d-specs.json"%ep,encoding="utf-8"))["specs"]}
    ej = json.load(open("小说2/storyboard-work/ep-%02d.json"%ep,encoding="utf-8"))
    fid = {s["id"]: s for s in ej["segments"]}
    print("ep%02d specs:%d file:%d" % (ep, len(sp), len(fid)))
    for k in sp:
        pt = sum(c[2] for c in sp[k]["plan"])
        f = fid.get(k)
        ft = sum(c["seconds"] for c in f["cuts"]) if f else None
        if ft is None or abs(ft-pt) > 0.05:
            print("   %s plan=%.1f file=%s" % (k, pt, ("%.1f"%ft) if ft is not None else "MISSING"))
