#!/usr/bin/env python3
"""DAS: cari artikel yang kehilangan tombol AMBIL PROMO setelah pengembalian isi."""
import base64, 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"}


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,link,title,content")
    if not isinstance(d, list):
        break
    posts += d
    if len(d) < 100:
        break
    page += 1

print(f"total artikel: {len(posts)}")
tanpa = [p for p in posts if not re.search(r"AMBIL\s*PROMO", p.get("content", {}).get("raw", "") or "", re.I)]
print(f"artikel tanpa tombol AMBIL PROMO: {len(tanpa)}")
for p in tanpa:
    raw = p["content"]["raw"]
    wa = re.findall(r"https?://(?:wa\.me|api\.whatsapp\.com)[^\"'\s>]*", raw)
    print(f"\n   #{p['id']} /{p['slug']}")
    print(f"      judul  : {re.sub('<[^>]+>', '', p['title']['raw'])[:60]}")
    print(f"      panjang: {len(raw)} karakter | tautan WA: {len(wa)}")
    if wa:
        print(f"      contoh : {wa[0][:80]}")
    # apakah ada tombol bergaya lain?
    tombol = re.findall(r'background-color:\s*(#[0-9a-fA-F]{6})', raw)
    print(f"      tombol berwarna lain: {set(tombol) or 'tidak ada'}")
    # cari jejak pelacak yang mungkin tertinggal
    print(f"      sisa pelacak klik_wa: {'ada' if 'klik_wa' in raw else 'tidak ada'}")
