#!/usr/bin/env python3
"""Render Raportis promo video using Playwright + GSAP."""
import os
from playwright.sync_api import sync_playwright

BASE = '/tmp/raportis-promo'
W, H, FPS = 1920, 1080, 30
os.makedirs(f'{BASE}/frames', exist_ok=True)

SEGMENTS = [
    ('01-hook', 3.0),
    ('02-solution', 3.0),
    ('03-vocal', 9.0),
    ('04-autofill', 7.0),
    ('05-save', 3.0),
    ('06-pdf', 5.0),
    ('07-cta', 5.0),
]

def main():
    print("🚀 Raportis Promo Renderer")
    print(f"   {W}x{H} @ {FPS}fps, {len(SEGMENTS)} segments")
    with sync_playwright() as p:
        browser = p.chromium.launch(
            executable_path='/usr/bin/chromium',
            headless=True,
            args=['--no-sandbox','--disable-gpu','--disable-dev-shm-usage']
        )
        for name, dur in SEGMENTS:
            total = int(dur * FPS)
            out_dir = f'{BASE}/frames/{name}'
            os.makedirs(out_dir, exist_ok=True)
            print(f"\n🎬 {name} ({dur}s, {total} frames)...")
            page = browser.new_page()
            page.set_viewport_size({"width": W, "height": H})
            page.goto(f'file://{BASE}/segments/{name}.html', wait_until='networkidle')
            page.wait_for_timeout(500)
            for frame in range(total):
                t = frame / FPS
                page.evaluate("function(t){window.myTL.time(t);}", t)
                page.screenshot(path=f'{out_dir}/frame_{frame:05d}.png', clip={"x":0,"y":0,"width":W,"height":H})
                if frame % 30 == 0:
                    print(f"  {frame}/{total} ({100*frame//total}%)")
            page.close()
            print(f"  ✅ {name}")
        browser.close()
    print("\n✅ All frames rendered!")

if __name__ == '__main__':
    main()
