#!/usr/bin/env python3
"""DAS: periksa 5 artikel bertanda peringatan — pastikan isi utuh dan atribut gambar benar-benar masuk."""
import base64, json, os, re, time, urllib.request, importlib.util

WS = "/home/mantapman/.hermes/profiles/atun/workspace"
spec = importlib.util.spec_from_file_location("cfg_das", f"{WS}/cfg_das.py")
m = importlib.util.module_from_spec(spec); spec.loader.exec_module(m)
CFG = m.CFG
DOM, AUTH = CFG["domain"], base64.b64encode(f'{CFG["user"]}:{CFG["pass"]}'.encode()).decode()
UA = {"User-Agent": "Mozilla/5.0"}
BACKUP = f"{WS}/das_pemulihan/gambar"
PERIKSA = [5873, 5820, 5603, 5600, 5569]


def rest(p):
    r = urllib.request.Request(f"https://{DOM}{p}", headers={"Authorization": f"Basic {AUTH}", **UA})
    for _ in range(4):
        try:
            with urllib.request.urlopen(r, timeout=220) as x:
                return json.loads(x.read())
        except Exception:
            time.sleep(6)
    return {}


print("=== pemeriksaan artikel bertanda peringatan ===")
for pid in PERIKSA:
    f = f"{BACKUP}/post_{pid}.txt"
    asli = open(f).read() if os.path.exists(f) else ""
    d = rest(f"/wp-json/wp/v2/posts/{pid}?context=edit&_fields=slug,content,status")
    kini = (d.get("content") or {}).get("raw", "")
    kata_asli = len(re.sub(r"<[^>]+>", " ", asli).split())
    kata_kini = len(re.sub(r"<[^>]+>", " ", kini).split())
    img_asli = len(re.findall("<img", asli, re.I))
    img_kini = len(re.findall("<img", kini, re.I))
    print(f"\n   #{pid} /{str(d.get('slug'))[:46]} (status {d.get('status')})")
    print(f"      panjang   : {len(asli)} → {len(kini)} karakter")
    print(f"      kata      : {kata_asli} → {kata_kini}")
    print(f"      gambar    : {img_asli} → {img_kini}")
    print(f"      srcset    : {len(re.findall('srcset=', asli))} → {len(re.findall('srcset=', kini))}")
    print(f"      lazy      : {len(re.findall('loading=', asli))} → {len(re.findall('loading=', kini))}")
    print(f"      isi hilang? {'YA — PERLU DIPULIHKAN' if kata_kini < kata_asli * 0.9 else 'tidak, utuh ✅'}")
