"""Test: verifica que stream.m3u8 es capturado durante la carga de pagina."""
import asyncio
import json
import sys
sys.stdout.reconfigure(encoding="utf-8")
from playwright.async_api import async_playwright
from pathlib import Path
from extract_streams import (
    load_session, MEMBERS_URL, COOKIES_FILE, extract_vidalytics_id,
    make_capture_handler, log, STRUCTURE_FILE
)

async def main():
    lessons = json.loads(STRUCTURE_FILE.read_text(encoding="utf-8"))
    pending = [l for l in lessons if not l.get("stream_url")][:3]
    print(f"Probando con lecciones: {[l['title'] for l in pending]}")

    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},
        )
        ok = await load_session(ctx)
        print(f"Sesion: {'OK' if ok else 'FALLO'}")

        capture = {"url": None, "locked": False}
        handler = make_capture_handler(capture)

        page = await ctx.new_page()
        page.on("response", handler)

        print(f"\nCargando {MEMBERS_URL}...")
        await page.goto(MEMBERS_URL, wait_until="domcontentloaded", timeout=30000)
        await page.wait_for_timeout(6000)

        vid_id = extract_vidalytics_id(await page.content())
        print(f"Vidalytics ID: {vid_id}")
        print(f"Capture URL: {capture.get('url', 'NINGUNA')}")

        if capture.get("url"):
            print(f"[OK] Stream URL capturada durante carga de pagina!")
        else:
            print("[!!] No se capturo stream URL durante carga. Revisando...")

        await browser.close()

asyncio.run(main())
