#!/usr/bin/env python3
"""Verifikasi artikel 7 TSLaw (#3667): heading, schema FAQPage, lebar teks, tautan, WA."""
import base64, json, re, urllib.request

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):
    r = urllib.request.Request(f"https://{DOM}{path}", headers={"Authorization": f"Basic {AUTH}", **UA})
    with urllib.request.urlopen(r, timeout=120) as x:
        return json.loads(x.read())


p = get("/wp-json/wp/v2/posts/3667?context=edit&_fields=id,slug,status,link,title,content,categories,tags,featured_media,meta")
raw = p["content"]["raw"]
print(f"#{p['id']} | status={p['status']} | slug={p['slug']} | link={p['link']}")
print(f"judul   : {p['title']['raw']}")
print(f"panjang : {len(raw)} char")

print("\n-- heading --")
for m in re.finditer(r"<h([23])>(.*?)</h\1>", raw, re.S):
    txt = re.sub(r"<[^>]+>", "", m.group(2)).strip()
    print(f"  h{m.group(1)}: {txt}")

print("\n-- schema FAQPage --")
s = re.search(r'<script type="application/ld\+json">(.*?)</script>', raw, re.S)
d = json.loads(s.group(1))
print(f"  @type={d['@type']} | q={len(d['mainEntity'])} | semua ada jawaban: "
      f"{all(q['acceptedAnswer']['text'] for q in d['mainEntity'])}")

print("\n-- tautan unik (harus 200 semua, sudah dicek sebelum kirim) --")
for u in sorted(set(re.findall(r'href="(https?://[^"]+)"', raw))):
    print(f"  {u}")

sisa = re.findall(r"\{[A-Za-z_\[\]0-9]+\}", raw)
cjk = re.findall(r"[一-鿿가-힯]", raw)
punya_entri = "ada" if "ENTRI[" in raw else "tidak"
print(f"\nplaceholder: {len(sisa)} | ENTRI[ : {punya_entri} | "
      f"CJK: {len(cjk)} | em dash: {raw.count(chr(8212))}")
kata = len([w for w in re.split(r"\s+", re.sub(r"<[^>]+>", " ", re.sub(r'<script.*?</script>', ' ', raw, flags=re.S))) if w])
print(f"kata: {kata}")
wa = re.findall(r'https://wa.me/[0-9]+[^" ]*', raw)
print(f"WA : {wa}")
print(f"meta: {json.dumps(p['meta'], ensure_ascii=False)}")
