#!/usr/bin/env python3
"""
Login manual no Google Flow para pegar cookies
"""
import asyncio
from playwright.async_api import async_playwright
import json

async def login_google_flow():
    async with async_playwright() as p:
        # Usar Chrome no Xvfb sem proxy primeiro
        browser = await p.chromium.launch(
            headless=False,
            args=[
                '--no-sandbox',
                '--disable-dev-shm-usage',
                '--disable-gpu'
            ]
        )
        
        context = await browser.new_context()
        page = await context.new_page()
        
        print("🚀 Navegando para Google Flow Labs...")
        await page.goto('https://labs.google/fx')
        
        # Aguardar a página carregar
        await page.wait_for_load_state('networkidle')
        
        print("📄 Página carregada. URL atual:", page.url)
        
        # Aguardar e procurar por botões de login
        await asyncio.sleep(3)
        
        # Tentar diferentes seletores para botão de login
        login_selectors = [
            'button:has-text("Sign in")',
            'a:has-text("Sign in")',
            '[data-testid="sign-in"]',
            '.sign-in',
            'button[type="submit"]'
        ]
        
        login_clicked = False
        for selector in login_selectors:
            try:
                element = page.locator(selector).first
                if await element.is_visible():
                    print(f"🔐 Clicando no botão de login: {selector}")
                    await element.click()
                    await page.wait_for_load_state('networkidle')
                    login_clicked = True
                    break
            except:
                continue
        
        if not login_clicked:
            print("⚠️ Nenhum botão de login encontrado. Aguardando interação manual...")
        
        print("📧 URL atual:", page.url)
        print("\n" + "="*80)
        print("🎯 INSTRUÇÕES PARA LOGIN MANUAL:")
        print("1. Se não redirecionou automaticamente, clique em 'Sign in' manualmente")
        print("2. Use: gabrielcustodiooliveira@gmail.com")
        print("3. Use: mmommorpg")
        print("4. Complete o 2FA quando solicitado")
        print("5. Aguarde até chegar na página principal do Flow Labs")
        print("6. O script continuará automaticamente em 90 segundos...")
        print("="*80 + "\n")
        
        # Aguardar 90 segundos para login manual + 2FA
        await asyncio.sleep(90)
        
        print("🍪 Extraindo cookies...")
        cookies = await context.cookies()
        
        # Procurar por cookies relevantes do Google Flow
        session_token = None
        csrf_token = None
        
        for cookie in cookies:
            if 'session' in cookie['name'].lower() or 'token' in cookie['name'].lower():
                print(f"🍪 Cookie encontrado: {cookie['name']} = {cookie['value'][:50]}...")
                if 'session' in cookie['name'].lower():
                    session_token = cookie['value']
                elif 'csrf' in cookie['name'].lower() or 'xsrf' in cookie['name'].lower():
                    csrf_token = cookie['value']
        
        # Salvar todos os cookies para análise
        with open('google_flow_cookies.json', 'w') as f:
            json.dump(cookies, f, indent=2)
        
        print("💾 Cookies salvos em google_flow_cookies.json")
        
        if session_token:
            print(f"✅ Session token encontrado: {session_token[:50]}...")
        if csrf_token:
            print(f"✅ CSRF token encontrado: {csrf_token[:50]}...")
        
        # Aguardar mais um pouco na página para garantir que tudo carregou
        await asyncio.sleep(10)
        
        await browser.close()
        return session_token, csrf_token

if __name__ == "__main__":
    session, csrf = asyncio.run(login_google_flow())
    
    if session:
        print(f"\n🎯 SESSION TOKEN: {session}")
    if csrf:
        print(f"\n🛡️ CSRF TOKEN: {csrf}")