#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""Debug: what happens on tzgg.html in playwright - all requests, console, page state"""
import asyncio, json
from playwright.async_api import async_playwright

async def main():
    async with async_playwright() as p:
        browser = await p.chromium.launch(headless=True, args=["--disable-blink-features=AutomationControlled", "--no-sandbox"])
        ctx = await browser.new_context(
            user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36",
            viewport={"width": 1400, "height": 900},
        )
        page = await ctx.new_page()
        reqs = []
        async def on_request(req):
            if "truecms" in req.url or "jpage" in req.url or "messageController" in req.url:
                reqs.append({"REQ": req.method, "url": req.url[:200], "post": (req.post_data or "")[:300]})
        async def on_response(resp):
            if "truecms" in resp.url or "jpage" in resp.url:
                reqs.append({"RESP": resp.status, "url": resp.url[:200]})
        async def on_console(msg):
            if msg.type in ("error", "warning"):
                reqs.append({"CONSOLE": msg.type, "text": msg.text[:200]})
        page.on("request", on_request)
        page.on("response", on_response)
        page.on("console", on_console)

        await page.goto("https://sthjj.nantong.gov.cn/ntshbj/tzgg/tzgg.html", wait_until="domcontentloaded", timeout=60000)
        await page.wait_for_timeout(10000)
        html = await page.content()
        print("html len:", len(html))
        # does the list render?
        items = await page.query_selector_all("#msgList li, .list-ul li")
        print("list items in DOM:", len(items))
        # pagination?
        pg = await page.query_selector_all("#page, .jpage")
        print("pagination containers:", len(pg))
        # save html for offline inspection
        with open("/root/gov_crawler/nt_tzgg_rendered.html", "w", encoding="utf-8") as f:
            f.write(html)
        print("saved rendered html")
        print("\n=== requests/console ===")
        for r in reqs:
            print(json.dumps(r, ensure_ascii=False))
        await browser.close()

asyncio.run(main())
