#!/usr/bin/env python3
"""Verifikasi independen artikel #15 TSLaw (draft 3722): baca ulang dari WordPress,
bandingkan isi dengan salinan lokal, dan periksa semua aturan wajib."""
import base64, hashlib, json, re, urllib.request, urllib.error

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"}
PID = 3722
LOKAL = "/home/mantapman/.hermes/profiles/atun/workspace/tslaw_listikel/artikel15.html"
KW = "pengacara pinjaman online surabaya"

h = {"Authorization": f"Basic {AUTH}", **UA}
req = urllib.request.Request(f"https://{DOM}/wp-json/wp/v2/posts/{PID}?context=edit", headers=h)
d = json.loads(urllib.request.urlopen(req, timeout=120).read())
raw = d["content"]["raw"]
judul = re.sub("<[^>]+>", "", d["title"]["raw"])
lokal = open(LOKAL, encoding="utf-8").read()

print(f"judul        : {judul}")
print(f"slug         : {d['slug']}")
print(f"status       : {d['status']}  (harus draft)")
print(f"kategori     : {d['categories']} (14=Hukum Bisnis)")
print(f"tag          : {d['tags']} ({len(d['tags'])} buah)")
print(f"foto utama   : media #{d['featured_media']}")
same = hashlib.sha256(raw.encode()).hexdigest()[:16] == hashlib.sha256(lokal.encode()).hexdigest()[:16]
print(f"isi identik dengan salinan lokal : {same}")

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])
meta = d["meta"]
md = meta.get("_yoast_wpseo_metadesc", "")
seo = meta.get("_yoast_wpseo_title", "")
wa_ok = bool(re.search(r'href="https://wa\.me/6281909222026[^ "]*"', raw))
q_type = '"@type": "Question"'
entri_nyata = [x for x in ["Tito Suprianto Law Firm", "OJK", "Satgas PASTI", "AFPI", "LBH Surabaya",
                           "Posbakum", "Polda Jawa Timur", "PERADI"] if x in raw]
pasal = [x for x in ["POJK Nomor 10/POJK.05/2022", "UU 27 Tahun 2022", "Pasal 29 UU ITE",
                     "Pasal 1365 KUHPerdata", "UU Nomor 8 Tahun 1999"] if x in raw]

print(f"\nkata (tanpa script)      : {kata} (batas 1000-1300)")
print(f"keyphrase                : {meta.get('_yoast_wpseo_focuskw')} (di isi {raw.lower().count(KW)} kali)")
print(f"judul SEO                : {seo} ({len(seo)} char, batas 60)")
print(f"meta description         : {md}")
print(f"  panjang {len(md)} char (<=158) | mulai keyphrase: {md.lower().startswith(KW)}")
print(f"entri 1 Tito Suprianto Law Firm : {'Tito Suprianto Law Firm' in raw}")
print(f"tautan beranda tslaw.id         : {raw.count(chr(34) + 'https://www.tslaw.id/' + chr(34))} (harus >=1)")
print(f"tombol WA 6281909222026         : {'wa.me/6281909222026' in raw} | href bersih: {wa_ok}")
print(f"FAQPage schema                  : {raw.count('FAQPage')} | jumlah Question: {raw.count(q_type)}")
print(f"jumlah <h3>                     : {raw.count('<h3>')} (7 entri + 5 FAQ = 12)")
print(f"tautan internal tslaw.id        : {len(re.findall(r'href=.https://www.tslaw.id/', raw))}")
print(f"em dash / kutip melengkung      : {raw.count(chr(8212))} / {len(re.findall(chr(8220) + '|' + chr(8221), raw))}")
jml_placeholder = len(re.findall(r"\{[A-Za-z_0-9]+\}", raw))
jml_cjk = len(re.findall("[\\u4e00-\\u9fff]", raw))
print(f"placeholder / CJK               : {jml_placeholder} / {jml_cjk}")
print(f"lembaga nyata                   : {', '.join(entri_nyata)}")
print(f"dasar hukum dikutip             : {', '.join(pasal)}")
