#!/usr/bin/env python3
"""Verifikasi independen artikel 8 TSLaw (#3671): heading, schema FAQPage, tautan, WA, meta."""
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/3671?context=edit&_fields=id,slug,status,link,title,content,categories,tags,featured_media,meta,excerpt")
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'])}")
for q in d["mainEntity"]:
    print(f"    - {q['name']} ({len(q['acceptedAnswer']['text'])} char)")

print("\n-- tautan unik --")
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"[\u3000-\u9fff\uac00-\ud7af]", raw)
print(f"\nplaceholder: {len(sisa)} | ENTRI[ : {'ada' if 'ENTRI[' in raw else 'tidak'} | "
      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_link = re.findall(r'https://wa.me/[0-9]+[^" ]*', raw)
print(f"WA  : {wa_link}")
print(f"kategori: {p['categories']} | tag: {p['tags']} | featured_media: {p['featured_media']}")
print(f"excerpt : {p['excerpt']['raw'][:120]}")
print(f"meta    : {json.dumps(p['meta'], ensure_ascii=False)}")
m = get("/wp-json/wp/v2/media/3670?context=edit&_fields=id,alt_text,source_url,media_details")
print(f"\nmedia #3670: {m['source_url']} | alt={m['alt_text']!r} | "
      f"ukuran={m.get('media_details', {}).get('width')}x{m.get('media_details', {}).get('height')}")
