"""Captura TODOS los requests de fast.vidalytics.com desde la carga inicial."""
import asyncio
import json
import sys
sys.stdout.reconfigure(encoding="utf-8")
from playwright.async_api import async_playwright
from pathlib import Path

SCRIPTS_DIR = Path(__file__).parent
COOKIES_FILE = SCRIPTS_DIR / ".course_cookies.json"
MEMBERS_URL = "https://kaleanders.clickfunnels.com/members-raio"

async def main():
    cookies = json.loads(COOKIES_FILE.read_text(encoding="utf-8"))

    async with async_playwright() as pw:
        browser = await pw.chromium.launch(headless=True)
        ctx = await browser.new_context(
            user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/124 Safari/537.36",
            viewport={"width": 1280, "height": 800},
        )
        await ctx.add_cookies(cookies)
        page = await ctx.new_page()

        all_fast = []  # Todos los requests a fast.vidalytics.com

        async def on_req(req):
            url = req.url
            if "fast.vidalytics.com" in url or "fast-dev.vidalytics.com" in url:
                all_fast.append(f"REQ: {url[:160]}")

        async def on_resp(resp):
            url = resp.url
            ctype = resp.headers.get("content-type", "")
            if "fast.vidalytics.com" in url or "fast-dev.vidalytics.com" in url:
                all_fast.append(f"RESP[{resp.status}][{ctype[:15]}]: {url[:160]}")

        page.on("request", on_req)
        page.on("response", on_resp)

        print("=== Cargando pagina (sin play) ===")
        await page.goto(MEMBERS_URL, wait_until="domcontentloaded", timeout=30000)
        await page.wait_for_timeout(8000)

        print(f"URLs fast.vidalytics durante carga ({len(all_fast)}):")
        for u in all_fast:
            print(f"  {u}")

        all_fast.clear()

        print("\n=== Llamando video.play() ===")
        for frame in page.frames:
            try:
                r = await frame.evaluate("""async () => {
                    const v = document.querySelector('video');
                    if (!v) return null;
                    try { await v.play(); return 'ok'; }
                    catch(e) { return 'err:' + e.message; }
                }""")
                if r: print(f"  frame result: {r}")
            except: pass

        await page.wait_for_timeout(10000)
        print(f"\nURLs fast.vidalytics despues del play ({len(all_fast)}):")
        for u in all_fast:
            print(f"  {u}")

        await browser.close()

asyncio.run(main())
