#!/usr/bin/env python3
"""TSLaw: verifikasi mendalam artikel keempat (#3557) lewat REST."""
import base64, json, re, urllib.request

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

PID = 3557
r = urllib.request.Request(f"https://{DOM}/wp-json/wp/v2/posts/{PID}?context=edit", headers=H)
with urllib.request.urlopen(r, timeout=180) as x:
    p = json.loads(x.read())

raw = p["content"]["raw"]
bersih = re.sub(r"<(script|style)[^>]*>.*?</\1>", " ", raw, flags=re.S | re.I)
teks = re.sub(r"<[^>]+>", " ", bersih)
kata = len([w for w in re.split(r"\s+", teks) if w])

print(f"judul   : {p['title']['raw']}")
print(f"status  : {p['status']} | slug: {p['slug']}")
print(f"kata    : {kata} | char: {len(raw)}")
print(f"h2/h3   : {raw.count('<h2>')}/{raw.count('<h3>')}")
entri = re.findall(r"<h3>(\d+)\. ([^<]+)</h3>", raw)
print(f"entri bernomor: {len(entri)}")
for n, t in entri:
    print(f"   {n:>2}. {t}")
ld = re.findall(r'<script type="application/ld\+json">(.*?)</script>', raw, re.S)
for s in ld:
    d = json.loads(s)
    print(f"schema  : {d.get('@type')} | mainEntity: {len(d.get('mainEntity', []))}")
    for q in d.get("mainEntity", []):
        print(f"   - {q['name'][:70]} ({len(q['acceptedAnswer']['text'].split())} kata jawaban)")
print(f"wa.me   : {'ada' if 'wa.me/6281909222026' in raw else 'TIDAK'}")
print(f"beranda di entri 1: {'ada' if 'https://www.tslaw.id/' in raw.split('<h3>2.')[0] else 'TIDAK'}")
tautan = sorted(set(re.findall(r'href="(https://www\.tslaw\.id/[^"]*)"', raw)))
print(f"tautan internal ({len(tautan)}):")
for t in tautan:
    print(f"   {t}")
sisa = re.findall(r"\{[A-Za-z_\[\]0-9]+\}", raw)
print(f"placeholder: {len(sisa)} {'(BERSIH)' if not sisa else sisa[:5]}")
print(f"em dash : {raw.count(chr(8212))} | CJK: {len(re.findall(chr(91)+chr(92)+'u3000-'+chr(92)+'u9fff'+chr(93), raw))}")
print("\nmeta:")
for k, v in p.get("meta", {}).items():
    if v:
        print(f"   {k} = {v}")
print(f"\nkategori: {p['categories']} | tag: {p['tags']} | featured_media: {p['featured_media']}")
