#!/usr/bin/env python3
"""DAS: lacak tombol 'AMBIL PROMO' — apakah dari tema (muncul di semua halaman) atau dari isi artikel,
dan ke mana tautannya."""
import base64, html, json, 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 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/124 Safari/537.36"}


def ambil(u, auth=False):
    h = dict(UA)
    if auth:
        h["Authorization"] = f"Basic {AUTH}"
    r = urllib.request.Request(f"https://{DOM}{u}", headers=h)
    for _ in range(3):
        try:
            with urllib.request.urlopen(r, timeout=90) as x:
                return x.read().decode("utf-8", "replace")
        except Exception:
            time.sleep(4)
    return ""


def promo_dari(h):
    """Cari elemen yang memuat teks AMBIL PROMO beserta tautannya."""
    hasil = []
    for mm in re.finditer(r"AMBIL PROMO", h, re.I):
        awal = max(0, mm.start() - 400)
        potong = h[awal:mm.end() + 250]
        tautan = re.findall(r'href="([^"]+)"', potong)
        kelas = re.findall(r'class="([^"]{0,120})"', potong)
        hasil.append({"tautan": tautan[-3:], "kelas": kelas[-2:]})
    return hasil


print("=== 1. beranda ===")
h = ambil("/?v=%d" % int(time.time()))
p = promo_dari(h)
print(f"   'AMBIL PROMO' muncul {len(p)}x")
for x in p[:3]:
    print(f"      tautan: {x['tautan']} | kelas: {x['kelas']}")

print("\n=== 2. lima artikel contoh ===")
posts = json.load(open(f"{WS}/drafts/das_audit_artikel_20260929.json"))
contoh = sorted(posts, key=lambda a: -a["klik"])[:5]
for a in contoh:
    hh = ambil(a["url"] + "?v=%d" % int(time.time()))
    pp = promo_dari(hh)
    wa = sorted(set(re.findall(r'href="([^"]*(?:wa\.me|whatsapp|api\.whatsapp)[^"]*)"', hh)))[:2]
    print(f"   {a['url'][:52]:<54} 'AMBIL PROMO' {len(pp)}x | tautan WA: {wa}")

print("\n=== 3. apakah 'AMBIL PROMO' ada di ISI artikel (bukan tema)? ===")
d = None
r = urllib.request.Request(f"https://{DOM}/wp-json/wp/v2/posts?per_page=20&context=edit&_fields=id,slug,content",
                           headers={"Authorization": f"Basic {AUTH}", **UA})
try:
    with urllib.request.urlopen(r, timeout=120) as x:
        d = json.loads(x.read())
except Exception as e:
    print("   REST gagal:", str(e)[:60])
if isinstance(d, list):
    ada = sum(1 for p2 in d if re.search(r"AMBIL PROMO", p2.get("content", {}).get("raw", ""), re.I))
    print(f"   dari {len(d)} artikel (20 pertama): {ada} memuat 'AMBIL PROMO' di isinya")
    for p2 in d:
        raw = p2.get("content", {}).get("raw", "")
        if re.search(r"AMBIL PROMO", raw, re.I):
            mm = re.search(r".{0,200}AMBIL PROMO.{0,200}", raw, re.S | re.I)
            print(f"      #{p2['id']} /{p2['slug'][:40]}")
            print(f"         {re.sub(chr(10), ' ', mm.group(0))[:300]}")
            break
