#!/usr/bin/env python3
"""Verifikasi independen artikel listikel ke-10 (draft #3679) 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 = 3679


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} (batas 1000-1300)")
print(f"  kategori   : {p['categories']}  tag: {p['tags']}  foto: {p['featured_media']}")

m = p["meta"]
print(f"  meta Yoast : focuskw={m.get('_yoast_wpseo_focuskw')!r}")
print(f"               title  ={m.get('_yoast_wpseo_title')!r} ({len(m.get('_yoast_wpseo_title') or '')} char)")
print(f"               metadesc={m.get('_yoast_wpseo_metadesc')!r} ({len(m.get('_yoast_wpseo_metadesc') or '')} char)")

# FAQPage harus 5 pertanyaan
sk = re.search(r'<script type="application/ld\+json">(.*?)</script>', raw, re.S)
skema = json.loads(sk.group(1)) if sk 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>')}")
pola_entri = r"<h3>[0-9]+\. "
print(f"  entri H3   : {len(re.findall(pola_entri, raw))} entri bernomor")
tl = sorted(set(re.findall(r'href="(https://www\.tslaw\.id/[^"]*)"', raw)))
print(f"  tautan int : {len(tl)} unik (semua ke tslaw.id, bukan /practice-areas/)")
print(f"     /practice-areas ada? {'ADA (MASALAH)' if '/practice-areas' in raw else 'tidak'}")
print(f"  em dash    : {raw.count(chr(8212))}")
beranda_link = 'href="https://www.tslaw.id/"'
print(f"  beranda    : {'ada' if beranda_link in raw else 'TIDAK'}")

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')}")

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
pg = rest("/wp-json/wp/v2/pages?per_page=5&orderby=modified&order=desc&_fields=id,slug,modified,title")
print("\n5 halaman terakhir yang dimodifikasi (harus lama, bukan hari ini):")
for x in pg:
    print(f"  #{x['id']:<5} {x['modified']}  {x['slug']}")

# beranda tidak berubah
try:
    with urllib.request.urlopen(urllib.request.Request("https://www.tslaw.id/", headers={"User-Agent": "Mozilla/5.0"}), timeout=60) as x:
        h = x.read().decode("utf-8", "ignore")
    print(f"\nberanda: HTTP {x.status}, {len(h)} byte, judul memuat 'Law Firm Surabaya': {'ya' if 'Law Firm Surabaya' in h else 'TIDAK'}")
except Exception as e:
    print(f"\nberanda gagal: {str(e)[:80]}")
