# -*- coding: utf-8 -*-

import requests
from urllib.parse import quote


HEADERS = {
    "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"
    ),
    "Referer": "https://new.land.naver.com/",
    "Accept": "application/json, text/plain, */*",
    "Accept-Language": "ko-KR,ko;q=0.9,en;q=0.8",
    "Connection": "keep-alive",
}


def build_api_url(realtor_id, page=1):
    realtor_id = quote(str(realtor_id).strip())

    return (
        "https://new.land.naver.com/api/articles"
        f"?realtorId={realtor_id}"
        f"&page={int(page)}"
        "&order=rank"
        "&tradeType="
        "&realEstateType="
        "&isFixed=false"
    )


def extract_article_nos(items):
    results = []

    for item in items:
        article_no = (
            item.get("articleNo")
            or item.get("atclNo")
            or ""
        )

        article_no = str(article_no).strip()

        if not article_no:
            continue

        results.append({
            "article_no": article_no,
            "article_name": item.get("articleName", ""),
            "trade_type": item.get("tradeTypeName", ""),
            "real_estate_type": item.get("realEstateTypeName", ""),
            "price_text": item.get("dealOrWarrantPrc", ""),
            "building_name": item.get("articleFeatureDesc", ""),
            "floor_info": item.get("floorInfo", ""),
            "area_info": item.get("areaName", ""),
        })

    return results


def find_latest_article_requests(
    realtor_id,
    page=1,
):
    url = build_api_url(
        realtor_id=realtor_id,
        page=page,
    )

    print("[REQUEST URL]", url)

    try:
        response = requests.get(
            url,
            headers=HEADERS,
            timeout=20,
        )

        print("[STATUS]", response.status_code)

        if response.status_code != 200:
            return {
                "ok": False,
                "status": response.status_code,
                "error": response.text[:500],
                "article_no": "",
                "candidates": [],
            }

        data = response.json()

        article_list = []

        if isinstance(data, dict):
            article_list = (
                data.get("articleList")
                or data.get("list")
                or data.get("result")
                or []
            )

        candidates = extract_article_nos(article_list)

        latest_article_no = ""

        if candidates:
            latest_article_no = candidates[0]["article_no"]

        return {
            "ok": True,
            "status": response.status_code,
            "article_no": latest_article_no,
            "candidates": candidates,
            "raw_keys": list(data.keys()) if isinstance(data, dict) else [],
        }

    except Exception as e:
        return {
            "ok": False,
            "error": str(e),
            "article_no": "",
            "candidates": [],
        }


if __name__ == "__main__":
    result = find_latest_article_requests(
        realtor_id="s5575s",
        page=1,
    )

    print(result)