#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""Test pagination params on nantong truecms getMessage.do"""
import requests, re, sys

URL = "https://sthjj.nantong.gov.cn/truecms/messageController/getMessage.do"
COLUMN = "f53004c4-95fe-476f-8a97-88df5f6e76b3"
HEADERS = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/125.0 Safari/537.36",
    "Referer": "https://sthjj.nantong.gov.cn/",
    "X-Requested-With": "XMLHttpRequest",
}

def get_items(params):
    try:
        r = requests.post(URL, data=params, headers=HEADERS, timeout=20)
        titles = re.findall(r'<a href="([^"]+)"[^>]*>([^<]+)</a>', r.text)
        total = re.search(r'<totalrecord>(\d+)<', r.text)
        return r.status_code, total.group(1) if total else "?", [t for _, t in titles][:3]
    except Exception as e:
        return "ERR", str(e), []

base = {"columnId": COLUMN}
p1 = get_items(dict(base, **{"page": 1}))
print("base page=1:", p1)

combos = [
    {"page": 2}, {"page": 3},
    {"pageIndex": 2}, {"pageIndex": 1},
    {"pageNo": 2}, {"pageNum": 2}, {"currentPage": 2},
    {"offset": 10}, {"offset": 20}, {"start": 10}, {"start": 20},
    {"pageSize": 10, "page": 2}, {"perPage": 10, "page": 2},
    {"pageSize": 10, "pageNo": 2}, {"pageSize": 10, "pageNum": 2},
    {"rows": 10, "page": 2}, {"rows": 10, "pageNo": 2},
    {"pageSize": 10, "offset": 10}, {"pageSize": 10, "start": 10},
    {"pageSize": 10, "currentPage": 2},
    {"pageSize": 10, "pageIndex": 2},
    {"page": 2, "pageSize": 10, "total": 1817},
]
seen = set()
for c in combos:
    key = tuple(sorted(c.items()))
    if key in seen: continue
    seen.add(key)
    r = get_items(dict(base, **c))
    diff = "DIFF" if r[2] != p1[2] else "same"
    print(f"{c} -> status={r[0]} total={r[1]} [{diff}] first3={r[2]}")

# try GET with params in query
print("\nGET style:")
for c in [{"page": 2}, {"pageIndex": 2}, {"pageNo": 2}]:
    try:
        r = requests.get(URL, params=dict(base, **c), headers=HEADERS, timeout=20)
        titles = re.findall(r'<a href="([^"]+)"[^>]*>([^<]+)</a>', r.text)
        print(f"GET {c} -> status={r.status_code} first3={[t for _, t in titles][:3]}")
    except Exception as e:
        print(f"GET {c} -> ERR {e}")
