from playwright.sync_api import sync_playwright
import os, json

with sync_playwright() as p:
    cdp = p.chromium.connect_over_cdp('http://localhost:9223')
    ctx = cdp.contexts[0]
    page = ctx.pages[0]

    # Intercept ALL responses
    video_responses = []
    
    def on_response(resp):
        url = resp.url
        if any(x in url for x in ['.mp4', 'video', 'share-videos', 'blob']):
            print(f'Video response: {resp.status} - {url[:80]}')
            video_responses.append({'url': url, 'status': resp.status})
            # Try to read the body
            try:
                body = resp.body()
                print(f'  Body length: {len(body)} bytes, starts with: {body[:20]}')
            except Exception as e:
                print(f'  Body error: {e}')

    page.on('response', on_response)
    
    # Also intercept downloads
    def on_download(download):
        print(f'Download started: {download.url[:80] if download.url else \"no url\"} -> suggested: {download.suggested_filename}')
    
    page.on('download', on_download)
    
    page.goto('https://grok.com/imagine/post/23dd7313-4a69-483b-ba8c-d3427f6603f6')
    page.wait_for_timeout(5000)
    
    try:
        page.locator('[aria-label="Permitirlas todas"]').click(timeout=2000)
        page.wait_for_timeout(500)
    except:
        pass
    
    # Monitor JS window.open calls
    window_opens = []
    original_open = page.evaluate('''() => {
        const originalWinOpen = window.open;
        window.open = function(url, name, specs) {
            console.log("WINDOW.OPEN CALLED:", url, name, specs);
            return originalWinOpen.call(window, url, name, specs);
        };
        return "window.open patched";
    }''')
    
    # Also monitor anchor clicks
    original_anchor_click = page.evaluate('''() => {
        document.addEventListener("click", function(e) {
            const anchor = e.target.closest("a");
            if (anchor) {
                console.log("ANCHOR CLICKED:", anchor.href, anchor.download, anchor.target);
            }
        }, true);
        return "anchor listener added";
    }''')
    
    print('Monitoring clicks...')
    page.wait_for_timeout(1000)
    
    # Click Descargar
    dl = page.locator('[aria-label="Descargar"]')
    if dl.count() > 0:
        box = dl.first.bounding_box()
        cx, cy = box['x'] + box['width']//2, box['y'] + box['height']//2
        page.mouse.click(cx, cy)
        print(f'Clicked at {cx}, {cy}')
        page.wait_for_timeout(10000)
    
    print('\nVideo responses captured:', len(video_responses))
    for r in video_responses:
        print(f'  {r}')
    
    print('\nFiles:')
    for f in sorted(os.listdir('/home/claw/videos/')):
        sz = os.path.getsize(f'/home/claw/videos/{f}')
        print(f'  {f}: {sz//1024}KB')
    
    cdp.close()