#!/usr/bin/env python3
"""Verifikasi independen artikel listikel ke-9 (draft #3675) langsung dari REST API TSLaw."""
import base64, json, re, urllib.request

USER, PASS = "bambangbot", "EFKm EYGx VQCP Y9go ncPr uM2Y"
AUTH = base64.b64encode(f"{USER}:{PASS}".encode()).decode()
UA = {"User-Agent": "Mozilla/5.0", "Authorization": f"Basic {AUTH}"}
PID = 3675


def rest(p):
    r = urllib.request.Request(f"https://tslaw.id{p}", headers=UA)
    with urllib.request.urlopen(r, timeout=120) as x:
        return json.loads(x.read())


p = rest(f"/wp-json/wp/v2/posts/{PID}?context=edit&_fields=id,slug,link,status,title,content,categories,tags,featured_media,meta,date,type")
raw = p["content"]["raw"]
teks = re.sub(r"<(script|style)[^>]*>.*?</\1>", " ", raw, flags=re.S | re.I)
kata = len([w for w in re.split(r"\s+", re.sub(r"<[^>]+>", " ", teks)) if w])
print(f"#{p['id']} {p['type']} {p['status']} | {p['slug']}")
print(f"  judul      : {p['title']['raw']}")
print(f"  link       : {p['link']}")
print(f"  kata       : {kata}")
print(f"  kategori   : {p['categories']}  tag: {p['tags']}  foto: {p['featured_media']}")
print(f"  meta       : {json.dumps(p['meta'], ensure_ascii=False)}")

# FAQPage harus 5 pertanyaan
m = re.search(r'<script type="application/ld\+json">(.*?)</script>', raw, re.S)
skema = json.loads(m.group(1)) if m else {}
print(f"  schema     : {skema.get('@type')} -> {len(skema.get('mainEntity', []))} pertanyaan")
for q in skema.get("mainEntity", []):
    print(f"     - {q['name']}")

print(f"  tombol WA  : {len(re.findall(r'wa.me/6281909222026', raw))} tautan")
print(f"  H2/H3      : {raw.count('<h2>')}/{raw.count('<h3>')}")
tl = set(re.findall(r'href="https://www\.tslaw\.id/[^"]*"', raw))
print(f"  tautan int : {len(tl)} unik")
print(f"  em dash    : {raw.count(chr(8212))}")

# media + alt
m2 = rest(f"/wp-json/wp/v2/media/{p['featured_media']}?context=edit&_fields=id,alt_text,source_url,media_details")
print(f"  media      : #{m2['id']} {m2['source_url']}")
print(f"  alt        : {m2['alt_text']}")
print(f"  ukuran     : {m2['media_details'].get('width')}x{m2['media_details'].get('height')}")

# tag baru (#128-130) benar-benar ada
for tid in p["tags"]:
    t = rest(f"/wp-json/wp/v2/tags/{tid}?_fields=id,name,slug,count")
    print(f"  tag #{t['id']:<4} {t['name']} ({t['slug']}) count={t['count']}")

# pastikan tidak ada halaman yang tersentuh: hitung post_type=page terbaru (modified)
pg = rest("/wp-json/wp/v2/pages?per_page=3&orderby=modified&order=desc&_fields=id,slug,modified,title")
print("\n3 halaman terakhir yang dimodifikasi (harus lama, bukan hari ini):")
for x in pg:
    print(f"  #{x['id']:<5} {x['modified']}  {x['slug']}")
