#!/usr/bin/env python3
"""DAS: bandingkan isi artikel pemenang vs yang dikorbankan di tiap klaster kanibal."""
import base64, html, json, 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"}

KLASTER = {
    "Alphard": {"menang": 5569, "kalah": [6566, 6304]},
    "Nissan": {"menang": 5657, "kalah": [8081]},
    "Lexus": {"menang": 5684, "kalah": [6708, 6705]},
    "Innova": {"menang": 6392, "kalah": [5600, 6932]},
    "Pajero": {"menang": 6430, "kalah": [6435, 5603]},
    "Mercy": {"menang": 8296, "kalah": [6711]},
}


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=180) as x:
                return json.loads(x.read())
        except Exception:
            time.sleep(4)
    return {}


def judul_bagian(raw):
    """Ambil daftar sub-judul + teks di bawahnya."""
    bersih = re.sub(r"<div[^>]*class=\"[^\"]*(?:schema-faq|wp-block-yoast)[^\"]*\"[^>]*>.*?</div>", " ", raw, flags=re.S)
    bagian = []
    for mm in re.finditer(r"<h([23])[^>]*>(.*?)</h\1>", bersih, re.S | re.I):
        t = re.sub(r"<[^>]+>", "", mm.group(2))
        bagian.append(html.unescape(re.sub(r"\s+", " ", t)).strip())
    return bagian


print("=== isi tiap klaster ===")
ringkas = {}
for nama, k in KLASTER.items():
    pm = rest(f"/wp-json/wp/v2/posts/{k['menang']}?context=edit&_fields=id,slug,link,title,content")
    jm = judul_bagian(pm["content"]["raw"])
    tm = re.sub(r"<[^>]+>", " ", pm["content"]["raw"])
    kata_m = len(tm.split())
    print(f"\n■ {nama.upper()}  — pemenang #{pm['id']} ({kata_m} kata)")
    print(f"   /{pm['slug']}")
    print(f"   bagian: {len(jm)} → {jm[:6]}")
    ringkas[nama] = {"menang": {"id": pm["id"], "slug": pm["slug"], "link": pm["link"], "kata": kata_m, "bagian": jm},
                     "kalah": []}
    for pid in k["kalah"]:
        pk = rest(f"/wp-json/wp/v2/posts/{pid}?context=edit&_fields=id,slug,link,title,content")
        jk = judul_bagian(pk["content"]["raw"])
        tk = re.sub(r"<[^>]+>", " ", pk["content"]["raw"])
        unik = [x for x in jk if not any(x.lower()[:28] in y.lower() for y in jm)]
        print(f"   ✗ kalah #{pk['id']} ({len(tk.split())} kata)  /{pk['slug'][:52]}")
        print(f"      bagian: {len(jk)} | {len(unik)} di antaranya belum ada di pemenang: {unik[:5]}")
        ringkas[nama]["kalah"].append({"id": pk["id"], "slug": pk["slug"], "link": pk["link"],
                                       "kata": len(tk.split()), "bagian": jk, "unik": unik})

json.dump(ringkas, open(f"{WS}/drafts/das_klaster_isi.json", "w"), indent=1, ensure_ascii=False)
print("\n→ drafts/das_klaster_isi.json")
