#!/usr/bin/env python3
"""DAS: samakan satu-satunya label tombol yang masih beda ('PROMO' → 'AMBIL PROMO') di #6386."""
import base64, json, os, re, time, urllib.request, urllib.error, 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/label2"
os.makedirs(BACKUP, exist_ok=True)


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=200) as x:
                return x.status, json.loads(x.read())
        except urllib.error.HTTPError as e:
            return e.code, e.read().decode()[:200]
        except Exception:
            time.sleep(5)
    return 0, "gagal"


PID = 6386
st, p = rest(f"/wp-json/wp/v2/posts/{PID}?context=edit&_fields=slug,content")
raw = p["content"]["raw"]
open(f"{BACKUP}/post_{PID}.txt", "w").write(raw)

mm = re.search(r"<a[^>]*>PROMO</a>", raw)
print("sebelum :", mm.group(0)[:160] if mm else "tidak ditemukan")

# ganti HANYA isi teksnya, tag tetap utuh
baru = re.sub(r"(<a[^>]*>)PROMO(</a>)", r"\1AMBIL PROMO\2", raw)
print(f"perubahan: {len(raw)} → {len(baru)} karakter | selisih {len(baru) - len(raw)}")

rest(f"/wp-json/wp/v2/posts/{PID}", "POST", {"content": baru})
_, cek = rest(f"/wp-json/wp/v2/posts/{PID}?context=edit&_fields=content")
raw2 = cek.get("content", {}).get("raw", "") if isinstance(cek, dict) else ""
print("sesudah :", (re.search(r"<a[^>]*>AMBIL PROMO</a>", raw2) or [None])[0].group(0)[:160] if re.search(r"<a[^>]*>AMBIL PROMO</a>", raw2) else "tidak ditemukan")
print(f"cocok dengan yang dikirim: {'✅' if raw2 == baru else '⚠️'}")
print(f"tag <a> vs </a>: {raw2.count('<a ')}/{raw2.count('</a>')} | sisa label 'PROMO' saja: {len(re.findall(r'<a[^>]*>PROMO</a>', raw2))}")
