# -*- coding: utf-8 -*-

import os
import json
import time
from playwright.sync_api import sync_playwright


COOKIE_PATH = os.path.join(
    os.getcwd(),
    "storage",
    "naver_land_cookies.json",
)


USER_AGENT = (
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
    "AppleWebKit/537.36 (KHTML, like Gecko) "
    "Chrome/136.0.0.0 Safari/537.36"
)


def ensure_cookie_dir():
    os.makedirs(os.path.dirname(COOKIE_PATH), exist_ok=True)


def save_cookies(cookies):
    ensure_cookie_dir()

    with open(COOKIE_PATH, "w", encoding="utf-8") as f:
        json.dump(cookies, f, ensure_ascii=False, indent=2)

    print("[COOKIE SAVED]", COOKIE_PATH)
    print("[COOKIE COUNT]", len(cookies))


def load_cookies():
    if not os.path.exists(COOKIE_PATH):
        return []

    with open(COOKIE_PATH, "r", encoding="utf-8") as f:
        return json.load(f)


def bootstrap_naver_land_cookies(headless=False):
    print("[BOOTSTRAP] open naver land")

    with sync_playwright() as p:
        browser = p.chromium.launch(
            headless=headless,
            args=[
                "--disable-blink-features=AutomationControlled",
                "--no-sandbox",
            ],
        )

        context = browser.new_context(
            locale="ko-KR",
            viewport={"width": 1365, "height": 900},
            user_agent=USER_AGENT,
        )

        page = context.new_page()

        page.goto(
            "https://new.land.naver.com/",
            wait_until="domcontentloaded",
            timeout=90000,
        )

        page.wait_for_timeout(5000)

        try:
            page.mouse.wheel(0, 1000)
            page.wait_for_timeout(1500)
        except Exception:
            pass

        cookies = context.cookies()

        save_cookies(cookies)

        browser.close()

        return cookies


def get_naver_land_cookies(force=False, headless=False):
    if not force:
        cookies = load_cookies()

        if cookies:
            print("[COOKIE LOAD]", len(cookies))
            return cookies

    return bootstrap_naver_land_cookies(headless=headless)


if __name__ == "__main__":
    get_naver_land_cookies(force=True, headless=False)