#!/usr/bin/env python3
"""TSC: bersihkan sisa klaim di #1905 (heading Ciri 10) dan #1936 (harga + workshop gratis)."""
import base64, html, json, os, re, sys, time, urllib.request, importlib.util

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

GANTI = {
 1905: [
   ("Ciri 10: Izin Resmi BPOM dan Halal MUI", "Ciri 10: Izin Operasional Klinik dan Izin Praktik Dokter"),
   ("ciri-10-izin-resmi-bpom-dan-halal-mui", "ciri-10-izin-operasional-klinik"),
 ],
 1936: [
   ("<li><strong>Harga Terjangkau:</strong>&nbsp;Mulai Rp150.000 untuk konsultasi dokter spesialis kulit dan kelamin anak.</li>",
    "<li><strong>Biaya:</strong>&nbsp;Rincian biaya konsultasi dan tindakan dijelaskan sebelum tindakan dilakukan.</li>"),
   ("<li><strong>Program Pencegahan:</strong>&nbsp;Workshop gratis bulanan tentang kulit sehat anak.</li>",
    "<li><strong>Edukasi Orang Tua:</strong>&nbsp;Bimbingan perawatan harian untuk menekan kekambuhan pada kulit anak.</li>"),
 ],
}


def rest(p, method="GET", data=None):
    h = {"Authorization": f"Basic {AUTH}", **UA}
    body = None
    if data is not None:
        body = json.dumps(data).encode(); h["Content-Type"] = "application/json"
    r = urllib.request.Request(f"https://{DOM}{p}", data=body, headers=h, method=method)
    for _ in range(3):
        try:
            with urllib.request.urlopen(r, timeout=180) as x:
                return json.loads(x.read())
        except Exception:
            time.sleep(4)
    return {}


for pid, daftar in GANTI.items():
    d = rest(f"/wp-json/wp/v2/posts/{pid}?context=edit&_fields=content,link")
    raw = d["content"]["raw"]
    open(f"{BACKUP}/post_{pid}_sebelum_bersih2.txt", "w").write(raw)
    baru, n = raw, 0
    for lama, gant in daftar:
        if lama in baru:
            baru = baru.replace(lama, gant); n += 1
        else:
            print(f"   #{pid}: frasa tidak ditemukan → {lama[:70]}")
    if n:
        rest(f"/wp-json/wp/v2/posts/{pid}", "POST", {"content": baru})
    cek = rest(f"/wp-json/wp/v2/posts/{pid}?context=edit&_fields=content,link")
    raw2 = cek.get("content", {}).get("raw", "")
    sisa = sorted({k for k in re.findall(r"BPOM|Halal MUI|Rp\d{3}\.\d{3}|workshop gratis|4\.9/5|tanpa risiko", raw2, re.I)})
    teks = html.unescape(re.sub(r"<[^>]+>", " ", re.sub(r"<script.*?</script>", " ", raw2, flags=re.S)))
    print(f"   #{pid} diganti {n} | kata {len([w for w in teks.split() if w])} | sisa klaim: {sisa if sisa else 'bersih'}")
    hh = urllib.request.urlopen(urllib.request.Request(cek["link"] + f"?v={int(time.time())}", headers=UA), timeout=90).read().decode("utf-8", "replace")
    print(f"      live: {[p for p in ('BPOM','Rp150','4.9/5','workshop gratis') if p.lower() in hh.lower()] or 'bersih'}")
