#!/usr/bin/env python3
"""Inventaris post TSLaw (publish/future/draft): cari artikel sebidang kecelakaan/pidana/asuransi
plus daftar tautan inti (layanan, hubungi, biaya, bantuan hukum gratis) untuk tautan internal."""
import base64, json, urllib.request, urllib.error, re

DOM = "tslaw.id"
USER, PASS = "bambangbot", "EFKm EYGx VQCP Y9go ncPr uM2Y"
AUTH = base64.b64encode(f"{USER}:{PASS}".encode()).decode()
UA = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/124 Safari/537.36"}


def rest(path):
    h = {"Authorization": f"Basic {AUTH}", **UA}
    r = urllib.request.Request(f"https://{DOM}{path}", headers=h)
    try:
        with urllib.request.urlopen(r, timeout=180) as x:
            return x.status, json.loads(x.read())
    except urllib.error.HTTPError as e:
        return e.code, e.read().decode()[:200]


semua, off = [], 0
while off < 400:
    st, p = rest(f"/wp-json/wp/v2/posts?status=publish,future,draft&per_page=100&offset={off}"
                 "&context=edit&_fields=id,slug,status,title,meta")
    if not isinstance(p, list) or not p:
        break
    semua += p
    off += 100
print(f"total post: {len(semua)}")
json.dump(semua, open("/home/mantapman/.hermes/profiles/atun/workspace/drafts/tslaw_inventaris_20261016.json", "w"),
          ensure_ascii=False)

KATA = ["kecelakaan", "laka", "tabrak", "lalu lintas", "lantas", "asuransi", "ganti rugi", "korban",
        "pidana", "polisi", "somasi", "mediasi", "bantuan hukum gratis", "sengketa", "perdata", "cerai",
        "wanprestasi", "sewa menyewa", "konsumen", "utan", "biaya"]
print("\n=== ARTIKEL SEBIDANG ===")
for p in sorted(semua, key=lambda x: x["id"]):
    t = p["title"]["raw"] if isinstance(p["title"], dict) else str(p["title"])
    fk = ((p.get("meta") or {}).get("_yoast_wpseo_focuskw") or "")
    g = (p["slug"] + " " + t + " " + fk).lower()
    if any(k in g for k in KATA):
        print(f"  #{p['id']:>5} {p['status']:<8} /{p['slug'][:58]:<58} | fk='{fk[:38]}' | {t[:46]}")

print("\n=== SEMUA PUBLISH (slug + fokus) ===")
for p in sorted(semua, key=lambda x: x["id"]):
    if p["status"] == "publish":
        fk = ((p.get("meta") or {}).get("_yoast_wpseo_focuskw") or "")
        print(f"  #{p['id']:>5} /{p['slug'][:62]:<62} fk='{fk[:34]}'")
