"""Generate final-render asset plans from AutoShortsBot render manifests."""

from __future__ import annotations

import argparse
import json
import sys
from pathlib import Path

PROJECT_ROOT = Path(__file__).resolve().parents[1]
if str(PROJECT_ROOT) not in sys.path:
    sys.path.insert(0, str(PROJECT_ROOT))

from autoshorts.asset_plan import write_asset_plans


def main() -> None:
    parser = argparse.ArgumentParser(description="Generate motion-led asset plans from render manifests.")
    parser.add_argument("--manifest-dir", default="data/render_manifests/testbatch_002_top3")
    parser.add_argument("--out", default="data/asset_plans/testbatch_002_top3")
    parser.add_argument("--ids", nargs="*", default=None)
    args = parser.parse_args()

    manifest_dir = Path(args.manifest_dir)
    manifests = []
    for path in sorted(manifest_dir.glob("*.json")):
        manifest = json.loads(path.read_text(encoding="utf-8"))
        if args.ids and manifest["video"]["id"] not in set(args.ids):
            continue
        manifests.append(manifest)

    paths = write_asset_plans(manifests, Path(args.out))
    print(f"Generated {len(paths)} asset plans in {args.out}")
    for path in paths:
        print(path)


if __name__ == "__main__":
    main()
