#!/usr/bin/env python3
"""TSLaw: cari artikel terpendek (untuk pengembangan) dan cek keberadaan Google Business Profile."""
import base64, json, re, time, urllib.request, importlib.util

WS = "/home/mantapman/.hermes/profiles/atun/workspace"
spec = importlib.util.spec_from_file_location("cfg_tslaw", f"{WS}/cfg_tslaw.py")
m = importlib.util.module_from_spec(spec); spec.loader.exec_module(m)
DOM, AUTH = "www.tslaw.id", base64.b64encode(f'{m.CFG["user"]}:{m.CFG["pass"]}'.encode()).decode()
UA = {"User-Agent": "Mozilla/5.0"}


def rest(p):
    r = urllib.request.Request(f"https://{DOM}{p}", headers={"Authorization": f"Basic {AUTH}", **UA})
    for _ in range(3):
        try:
            with urllib.request.urlopen(r, timeout=180) as x:
                return json.loads(x.read())
        except Exception:
            time.sleep(4)
    return []


posts, page = [], 1
while True:
    d = rest(f"/wp-json/wp/v2/posts?per_page=100&page={page}&status=publish&context=edit&_fields=id,slug,title,content,date")
    if not isinstance(d, list):
        break
    posts += d
    if len(d) < 100:
        break
    page += 1

data = []
for p in posts:
    teks = re.sub(r"<[^>]+>", " ", p["content"]["raw"] or "")
    data.append({"id": p["id"], "slug": p["slug"],
                 "judul": re.sub("<[^>]+>", "", p["title"]["raw"])[:56],
                 "kata": len(teks.split()),
                 "tgl": p.get("date", "")[:10],
                 "wa": len(re.findall(r"wa\.me|whatsapp", p["content"]["raw"] or "", re.I)),
                 "faq": "FAQPage" in (p["content"]["raw"] or "")})

data.sort(key=lambda x: x["kata"])
print(f"=== {len(data)} artikel | rata-rata {round(sum(x['kata'] for x in data)/max(len(data),1))} kata ===")
print("\n--- 15 artikel terpendek ---")
for x in data[:15]:
    print(f"   #{x['id']:>5} {x['kata']:>4} kata | WA:{x['wa']} | FAQ:{'ya' if x['faq'] else 'tidak'} | {x['judul'][:54]}")

print("\n--- sebaran ---")
for amb in (0, 300, 600, 900, 1200, 1500):
    n = len([x for x in data if amb <= x["kata"] < amb + 300])
    print(f"   {amb}-{amb+299} kata: {n} artikel")
print(f"   tanpa tombol WhatsApp: {len([x for x in data if x['wa'] == 0])} artikel")
print(f"   tanpa skema FAQ      : {len([x for x in data if not x['faq']])} artikel")
print(f"   artikel belum diperbarui sejak < 2026-09-01: {len([x for x in data if x['tgl'] < '2026-09-01'])}")
