#!/usr/bin/env python3
"""
Cell-7 SNU×정당한보상 배너 Playwright 렌더링
#17 숫자뉴스플래시 스타일
"""

import sys
from pathlib import Path
from playwright.sync_api import sync_playwright

BASE = Path("/home/jay/workspace/output/banners/versions/v-round2/cell-7-snu-fair")

BANNERS = [
    {
        "html": BASE / "meta-feed-1080x1080.html",
        "png":  BASE / "meta-feed-1080x1080.png",
        "w": 1080,
        "h": 1080,
    },
    {
        "html": BASE / "google-resp-1200x628.html",
        "png":  BASE / "google-resp-1200x628.png",
        "w": 1200,
        "h": 628,
    },
]

def render():
    results = []
    with sync_playwright() as p:
        browser = p.chromium.launch()
        for banner in BANNERS:
            html_path = banner["html"]
            png_path  = banner["png"]
            W, H = banner["w"], banner["h"]

            if not html_path.exists():
                print(f"[ERROR] HTML 없음: {html_path}")
                results.append((str(png_path), False))
                continue

            page = browser.new_page(viewport={"width": W, "height": H})
            try:
                page.goto(f"file://{html_path}", wait_until="networkidle")
                page.wait_for_timeout(2500)
                page.screenshot(
                    path=str(png_path),
                    type="png",
                    clip={"x": 0, "y": 0, "width": W, "height": H}
                )
                size = png_path.stat().st_size
                print(f"[OK] {png_path.name}  ({W}x{H})  {size:,} bytes")
                results.append((str(png_path), True))
            except Exception as e:
                print(f"[ERROR] {png_path.name}: {e}")
                results.append((str(png_path), False))
            finally:
                page.close()

        browser.close()

    # 결과 요약
    success = sum(1 for _, ok in results if ok)
    print(f"\n렌더링 완료: {success}/{len(BANNERS)} 성공")
    for path, ok in results:
        status = "✓" if ok else "✗"
        print(f"  {status} {path}")

    return 0 if success == len(BANNERS) else 1

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