#!/usr/bin/env python3
from __future__ import annotations

import argparse
import json
from pathlib import Path
from typing import Any


BUCKETS = ["shot_sizes", "camera_angles", "composition", "motion", "animation_specific"]


def build_prompt_lines(data: dict[str, Any]) -> list[str]:
    lines = []
    for bucket in BUCKETS:
        entries = data.get(bucket, [])
        labels = ", ".join(entry["label"] for entry in entries)
        lines.append(f"{bucket}: {labels}")
    return lines


def main() -> None:
    parser = argparse.ArgumentParser(description="Build structured shot taxonomy/reference data")
    parser.add_argument("--seed", required=True, type=Path)
    parser.add_argument("--output", required=True, type=Path)
    args = parser.parse_args()

    seed: dict[str, Any] = json.loads(args.seed.read_text())
    payload = {
        **seed,
        "prompt_summary": build_prompt_lines(seed),
        "all_labels": {
            bucket: [entry["label"] for entry in seed.get(bucket, [])]
            for bucket in BUCKETS
        },
    }
    args.output.parent.mkdir(parents=True, exist_ok=True)
    args.output.write_text(json.dumps(payload, indent=2) + "\n")
    print(f"Wrote shot reference to {args.output}")


if __name__ == "__main__":
    main()
