"""Render preview MP4 videos from AutoShortsBot renderer 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.preview_renderer import render_preview_video


def _default_output_for_manifest(manifest_path: Path, output_dir: Path) -> Path:
    return output_dir / f"{manifest_path.stem}.mp4"


def main() -> None:
    parser = argparse.ArgumentParser(description="Render manifest-driven preview MP4 files.")
    parser.add_argument("manifest", help="Path to a render manifest JSON file.")
    parser.add_argument("--out-dir", default="data/previews/testbatch_002_top3")
    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()

    manifest_path = Path(args.manifest)
    manifest = json.loads(manifest_path.read_text(encoding="utf-8"))
    output_path = _default_output_for_manifest(manifest_path, Path(args.out_dir))
    result = render_preview_video(
        manifest,
        output_path,
        width=args.width,
        height=args.height,
        fps=args.fps,
    )
    print(f"Rendered preview: {result['output_path']}")
    print(f"Frames: {result['frame_count']}")
    print(f"FPS: {result['fps']}")


if __name__ == "__main__":
    main()
