#!/usr/bin/env python3
"""TSLaw: daftar artikel yang sudah ada (untuk memilih tautan internal artikel pendirian PT/CV)."""
import base64, json, re, urllib.request, urllib.error, time

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 get(path):
    h = {"Authorization": f"Basic {AUTH}", **UA}
    for i in range(3):
        try:
            r = urllib.request.Request(f"https://{DOM}{path}", headers=h)
            with urllib.request.urlopen(r, timeout=120) as x:
                return json.loads(x.read())
        except Exception as e:
            print("retry", str(e)[:60]); time.sleep(5)
    return []

semua = []
for page in range(1, 12):
    d = get(f"/wp-json/wp/v2/posts?per_page=100&page={page}&status=publish,draft,future"
            f"&_fields=id,slug,title,status,link,date")
    if not isinstance(d, list) or not d:
        break
    semua += d
    if len(d) < 100:
        break

print(f"total artikel: {len(semua)}\n")
penting = re.compile(r"pt|cv|nib|usaha|badan|legalitas|pajak|npwp|siup|izin|bisnis|korporasi|perusahaan|"
                     r"akta|notaris|merek|kontrak|tenaga|pekerja|utang|waris|cerai|wasiat|tanah|sertifikat|"
                     r"hukum|advokat|pengacara|panduan|cara", re.I)
for p in sorted(semua, key=lambda x: x["id"]):
    t = re.sub(r"<[^>]+>", "", p["title"]["rendered"])
    if penting.search(p["slug"]) or penting.search(t):
        print(f"{p['id']:>5} {p['status']:<8} {p['slug'][:70]:<72} {t[:80]}")

print("\n--- semua slug ---")
for p in sorted(semua, key=lambda x: x["id"]):
    print(f"{p['id']:>5} {p['status']:<8} {p['slug']}")
