#!/usr/bin/env python3
"""Verifikasi: tiga slug mati sekarang 200, tautan di artikel induk hidup, dan isi artikel baru bersih."""
import base64, json, re, urllib.request

AUTH = base64.b64encode(b"bambangbot:q26r RePo BVy6 pwU2 F3z7 ouyl").decode()
H = {"Authorization": f"Basic {AUTH}", "User-Agent": "Mozilla/5.0"}
UA = {"User-Agent": "Mozilla/5.0"}
BARU = [9498, 9501, 9504]
SLUG_MATI = ["/kenapa-rumah-sakit-dan-klinik-wajib-punya-strategi-digital-marketing/",
             "/konten-edukasi-kesehatan-kepercayaan-pasien/",
             "/website-rumah-sakit-gagal-pasien/"]

print("=== status URL yang tadinya 404 ===")
for u in SLUG_MATI:
    try:
        with urllib.request.urlopen(urllib.request.Request("https://studiosoft.id" + u, headers=UA, method="GET"),
                                    timeout=60) as r:
            st = r.status
    except Exception as e:
        st = str(e)[:40]
    print(f"   {st} · {u}")

print("\n=== tautan di artikel induk #3535 ===")
x = json.loads(urllib.request.urlopen(urllib.request.Request(
    "https://studiosoft.id/wp-json/wp/v2/posts/3535", headers=UA), timeout=90).read())
for u in SLUG_MATI:
    ada = u.strip("/") in x["content"]["rendered"]
    print(f"   tautan {'ADA' if ada else 'TIDAK ADA'} di isi induk · {u}")

print("\n=== isi tiga artikel baru ===")
for pid in BARU:
    d = json.loads(urllib.request.urlopen(urllib.request.Request(
        f"https://studiosoft.id/wp-json/wp/v2/posts/{pid}?context=edit", headers=H), timeout=120).read())
    isi = d["content"]["raw"]
    teks = re.sub(r"\s+", " ", re.sub("<[^>]+>", " ", re.sub(r"<script.*?</script>", " ", isi, flags=re.S))).strip()
    fm = d.get("featured_media")
    med = json.loads(urllib.request.urlopen(urllib.request.Request(
        f"https://studiosoft.id/wp-json/wp/v2/media/{fm}", headers=H), timeout=90).read())
    patah = 0
    for mo in re.finditer(r"<(p|li|h2|h3)[^>]*>(.*?)</\1>", isi, re.S):
        b = mo.group(2)
        if "\n" not in b or "<br" in b:
            continue
        for t in [q.strip() for q in b.split("\n")][:-1]:
            if t and not re.search(r"[.!?:;]$", t):
                patah += 1
    internal = set(re.findall(r'href="(https://studiosoft\.id/[^"]+)"', isi))
    print(f"\n■ #{pid} {d['slug']}")
    print(f"   status {d['status']} · {len(teks.split())} kata · gambar {med['media_details']['width']}x"
          f"{med['media_details']['height']} .{med['source_url'].split('.')[-1]} · alt "
          f"{'ada' if med.get('alt_text') else 'TIDAK'}")
    print(f"   WA {'ada' if 'wa.me/6281935000624' in isi else 'TIDAK'} · FAQPage "
          f"{'ada' if 'FAQPage' in isi else 'TIDAK'} · CJK {len(re.findall(r'[一-龥ぁ-ん가-힣]', teks))} · "
          f"patahan {patah} · tautan internal {len(internal)}")
    mati = []
    for u in internal:
        try:
            urllib.request.urlopen(urllib.request.Request(u, headers=UA, method="GET"), timeout=45)
        except Exception as e:
            mati.append(u)
    print(f"   tautan mati: {mati if mati else 'tidak ada'}")
