"""Generate retention-led shot plans for finalized AutoShortsBot scripts."""

from __future__ import annotations

import argparse
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.growth_plan import load_testbatch
from autoshorts.shot_planner import write_shot_plans
from autoshorts.voiceover_finalizer import finalize_voiceover

DEFAULT_SELECTED_IDS = ["ai-004", "ai-005", "attention-002"]


def main() -> None:
    parser = argparse.ArgumentParser(description="Generate shot plans for finalized scripts.")
    parser.add_argument("--batch", default="data/drafts/testbatch_002.json")
    parser.add_argument("--out", default="data/shot_plans/testbatch_002_top3")
    parser.add_argument("--ids", nargs="*", default=DEFAULT_SELECTED_IDS)
    args = parser.parse_args()

    batch = load_testbatch(Path(args.batch))
    selected = set(args.ids)
    finals = [finalize_voiceover(idea) for idea in batch.get("ideas", []) if idea["id"] in selected]
    paths = write_shot_plans(finals, Path(args.out))

    print(f"Generated {len(paths)} shot plans in {args.out}")
    for path in paths:
        print(path)


if __name__ == "__main__":
    main()
