"""Debug: captura TODAS las requests/responses de Vidalytics."""
import asyncio
import sys
sys.stdout.reconfigure(encoding="utf-8")
from playwright.async_api import async_playwright

VID_ID = "wihR3kVLVbphHxSJ"

async def main():
    async with async_playwright() as pw:
        browser = await pw.chromium.launch(headless=False)  # Visible para debug
        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},
        )
        page = await ctx.new_page()

        all_urls = []

        async def on_request(req):
            url = req.url
            if "vidalytics" in url or "fast." in url:
                all_urls.append(f"REQ: {url[:120]}")

        async def on_response(resp):
            url = resp.url
            ctype = resp.headers.get("content-type", "")
            if "vidalytics" in url or "fast." in url or "video" in ctype or "m3u8" in ctype:
                all_urls.append(f"RESP [{resp.status}] [{ctype[:30]}]: {url[:120]}")

        page.on("request", on_request)
        page.on("response", on_response)

        embed_url = f"https://vidalytics.com/embed/{VID_ID}"
        print(f"Abriendo: {embed_url}")
        await page.goto(embed_url, wait_until="domcontentloaded", timeout=25000)
        await page.wait_for_timeout(5000)

        print("\n--- URLs capturadas antes del click ---")
        for u in all_urls[-20:]:
            print(f"  {u}")

        # Intentar click en play
        print("\nIntentando click en play...")
        all_urls.clear()

        # Intentar en todos los frames
        for frame in page.frames:
            print(f"  Frame: {frame.url[:80]}")
            try:
                result = await frame.evaluate("""() => {
                    const v = document.querySelector('video');
                    if (v) { v.play(); return 'clicked video'; }
                    const p = document.querySelector('.play-button, [class*=play], button');
                    if (p) { p.click(); return 'clicked button: ' + p.className; }
                    return 'no element found';
                }""")
                print(f"    JS result: {result}")
            except Exception as e:
                print(f"    Error: {e}")

        # Click en el centro de la pantalla tambien
        await page.mouse.click(640, 360)
        await page.wait_for_timeout(8000)

        print("\n--- URLs capturadas despues del click ---")
        for u in all_urls:
            print(f"  {u}")

        # Buscar src del video element en todos los frames
        print("\n--- Video src en frames ---")
        for frame in page.frames:
            try:
                src = await frame.evaluate("""() => {
                    const v = document.querySelector('video');
                    if (!v) return null;
                    return { src: v.src, currentSrc: v.currentSrc, readyState: v.readyState };
                }""")
                if src:
                    print(f"  Frame {frame.url[:60]}: {src}")
            except Exception:
                pass

        await browser.close()

asyncio.run(main())
