#!/usr/bin/env python3
"""依總秒數排出 15–20 秒宣傳片的鉤子、示範與行動呼籲。"""

from __future__ import annotations

import argparse
import json
import sys


def plan(total: float) -> dict:
    if total < 15 or total > 20:
        raise ValueError("總長度請介於 15 與 20 秒（含）。")
    hook = 3.0 if total <= 17 else 4.0
    cta = 4.0
    demo = round(total - hook - cta, 1)
    return {
        "total_seconds": total,
        "beats": [
            {"name": "hook", "seconds": hook, "purpose": "前三到四秒說明這是什麼產品、為什麼要看下去"},
            {"name": "demo", "seconds": demo, "purpose": "只示範一個核心操作，不要一次介紹全部功能"},
            {"name": "cta", "seconds": cta, "purpose": "告訴觀眾下一步：下載、預約或看說明"},
        ],
    }


def main() -> int:
    parser = argparse.ArgumentParser(description="短秒數宣傳結構")
    parser.add_argument("--seconds", type=float, default=18)
    parser.add_argument("-o", "--output")
    args = parser.parse_args()
    try:
        result = plan(args.seconds)
    except ValueError as exc:
        print(exc, file=sys.stderr)
        return 1
    text = json.dumps(result, ensure_ascii=False, indent=2)
    print(text)
    if args.output:
        Path = __import__("pathlib").Path
        Path(args.output).write_text(text + "\n", encoding="utf-8")
    return 0


if __name__ == "__main__":
    sys.exit(main())
