"""Render free production job specs with the local motion renderer."""

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.local_motion_renderer import render_local_motion_video


def _default_output_path(jobs: dict, output_dir: Path) -> Path:
    return output_dir / f"{jobs['video']['id']}.mp4"


def main() -> None:
    parser = argparse.ArgumentParser(description="Render free/local motion MP4 from production jobs.")
    parser.add_argument(
        "--jobs",
        default="data/free_production_jobs/mechanism_pilots/hidden-money-systems-warum-ein-billiges-auto-teuer-sein-kann.json",
        help="Path to a free production jobs JSON file.",
    )
    parser.add_argument("--out-dir", default="data/local_motion_renders/mechanism_pilots")
    parser.add_argument("--output", default=None, help="Optional exact MP4 output path.")
    parser.add_argument("--width", type=int, default=540)
    parser.add_argument("--height", type=int, default=960)
    parser.add_argument("--fps", type=int, default=24)
    args = parser.parse_args()

    jobs_path = Path(args.jobs)
    jobs = json.loads(jobs_path.read_text(encoding="utf-8"))
    output_path = Path(args.output) if args.output else _default_output_path(jobs, Path(args.out_dir))
    result = render_local_motion_video(jobs, output_path, width=args.width, height=args.height, fps=args.fps)

    print(f"Rendered local motion video: {result['output_path']}")
    print(f"Metadata: {result['metadata_path']}")
    print(f"Scenes: {result['scene_count']} | duration: {result['rendered_duration_seconds']}s | fps: {result['fps']}")


if __name__ == "__main__":
    main()
