#!/usr/bin/env python3
"""DAS: audit tepat label tombol — hitung label yang BUKAN persis 'AMBIL PROMO' (peka huruf besar/kecil)."""
import base64, json, re, time, urllib.request, importlib.util
from collections import Counter

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


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


posts, page = [], 1
while True:
    d = rest(f"/wp-json/wp/v2/posts?per_page=100&page={page}&status=publish&context=edit&_fields=id,slug,content")
    if not isinstance(d, list):
        break
    posts += d
    if len(d) < 100:
        break
    page += 1

PERSIS = re.compile(r"<a[^>]*>(AMBIL PROMO)</a>")
label_lain = Counter()
tempat = {}
dobel = []
kurung_buka = kurung_tutup = 0
for p in posts:
    raw = p.get("content", {}).get("raw", "") or ""
    kurung_buka += raw.count("<a ")
    kurung_tutup += raw.count("</a>")
    if "AMBIL PROMOambil" in raw or "AMBIL PROMOAmbil" in raw:
        dobel.append(p["id"])
    for mm in re.finditer(r"<a[^>]*>([^<]{0,45})</a>", raw):
        t = mm.group(1).strip()
        if "promo" in t.lower() and t != "AMBIL PROMO":
            label_lain[t] += 1
            tempat.setdefault(t, []).append(p["id"])

print(f"artikel: {len(posts)} | <a> {kurung_buka} vs </a> {kurung_tutup} "
      f"({'seimbang ✅' if kurung_buka == kurung_tutup else 'TIDAK SEIMBANG ⚠️'})")
print(f"artikel bertanda teks dobel: {dobel or 'tidak ada ✅'}")
print(f"tombol dengan label persis 'AMBIL PROMO': {sum(len(PERSIS.findall(p.get('content', {}).get('raw', '') or '')) for p in posts)}")

print("\n=== label tombol lain yang memuat kata 'promo' ===")
if not label_lain:
    print("   tidak ada ✅")
for t, n in label_lain.most_common(12):
    print(f"   {n:>3}x «{t}»  contoh #{tempat[t][:3]}")
