#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
小红书登录后自动保存 cookies
"""

import json
import time
from pathlib import Path
from playwright.sync_api import sync_playwright

# Clash 代理配置
PROXY_SERVER = "http://127.0.0.1:7890"

# Cookies 保存路径
CONFIG_FILE = Path(__file__).parent.parent / "beijing-exhibitions" / "config" / "xiaohongshu_cookies.json"

print("=" * 70)
print("小红书登录后自动保存 Cookies", flush=True)
print("=" * 70)
print(f"代理: {PROXY_SERVER}", flush=True)
print(f"保存路径: {CONFIG_FILE}", flush=True)

with sync_playwright() as p:
    browser = p.chromium.launch(
        headless=True,
        executable_path='/usr/bin/google-chrome',
        args=[
            '--disable-blink-features=AutomationControlled',
            '--disable-dev-shm-usage',
            '--no-sandbox',
        ]
    )
    
    context = browser.new_context(
        user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
        viewport={"width": 1920, "height": 1080},
        locale='zh-CN'
    )
    
    page = context.new_page()
    
    # 访问小红书首页（已登录状态）
    print("\n[1/3] 访问小红书首页...", flush=True)
    page.goto('https://www.xiaohongshu.com/explore', wait_until='networkidle', timeout=90000)
    time.sleep(5)
    
    # 检查当前 URL
    current_url = page.url
    print(f"当前 URL: {current_url}", flush=True)
    
    # 如果跳转到登录页，说明未登录
    if 'login' in current_url:
        print("\n❌ 未检测到登录状态", flush=True)
        print("可能原因：", flush=True)
        print("1. 用户未扫码登录", flush=True)
        print("2. 登录已过期", flush=True)
        print("3. 需要重新扫码", flush=True)
        browser.close()
        exit(1)
    
    # 获取 cookies
    print("[2/3] 获取 cookies...", flush=True)
    cookies_list = context.cookies()
    
    # 转换为字典格式
    cookies_dict = {}
    for cookie in cookies_list:
        if 'xiaohongshu.com' in cookie.get('domain', ''):
            cookies_dict[cookie['name']] = cookie['value']
    
    print(f"获取到 {len(cookies_dict)} 个 cookies", flush=True)
    
    # 保存到文件
    print("[3/3] 保存 cookies...", flush=True)
    with open(CONFIG_FILE, 'w', encoding='utf-8') as f:
        json.dump(cookies_dict, f, ensure_ascii=False, indent=2)
    
    print(f"✅ Cookies 已保存到: {CONFIG_FILE}", flush=True)
    
    # 验证保存是否成功
    with open(CONFIG_FILE, 'r', encoding='utf-8') as f:
        saved_cookies = json.load(f)
    
    print(f"验证：文件包含 {len(saved_cookies)} 个 cookies", flush=True)
    
    # 截图确认
    screenshot_path = Path(__file__).parent / "data" / "xhs_login_success.png"
    page.screenshot(path=str(screenshot_path))
    print(f"登录状态截图: {screenshot_path}", flush=True)
    
    browser.close()

print("\n" + "=" * 70)
print("✅ Cookies 保存完成", flush=True)
print("=" * 70)
print("\n下一步：可以使用这些 cookies 访问小红书", flush=True)
