#!/usr/bin/env python3
"""Molde: gera media_paths.json {fileStem: abspath} dos clips do momento.

Chave = stem do arquivo no disco (C8196, PRE_0172cerimonia) — paridade com
`vlib.footage_key(name, cam=)` e Swift `PlacedClip.basename` (name = f\"{cam}_{stem}\").
NÃO usar split+[:-4] (colapsa clips sem extensão). READ-ONLY (só lista paths).

Uso: wedding_paths.py decupagem_x.json [--momento cerimonia]
"""
import os, json, argparse
from sync_ingest import clips_in_range, cam_folders

ap = argparse.ArgumentParser()
ap.add_argument("decupagem")
ap.add_argument("--momento", default="cerimonia")
a = ap.parse_args()

decup = json.load(open(a.decupagem))
base = decup["base"]
# MERGE (não overwrite) — media_paths.json é compartilhado entre casamentos (qcache/shakecache
# de OUTROS casamentos dependem dele continuar tendo os footages deles).
paths = json.load(open("media_paths.json")) if os.path.exists("media_paths.json") else {}
novos = 0
for cam, ci in decup.get("cameras", {}).items():
    for folder in cam_folders(base, ci["pasta"]):
        for f in clips_in_range(folder, ci.get(a.momento)):
            name = os.path.splitext(os.path.basename(f))[0]   # footage puro, sem prefixo cam/slug
            if name not in paths: novos += 1
            paths[name] = f

json.dump(paths, open("media_paths.json", "w"), indent=0, ensure_ascii=False)
print(f"media_paths.json: {len(paths)} clips total ({novos} novos deste casamento, {a.momento})")
