#!/usr/bin/env python3
"""TSLaw: petakan artikel tanpa tombol WA dan artikel yang punya bagian FAQ (untuk skema)."""
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_tslaw", f"{WS}/cfg_tslaw.py")
m = importlib.util.module_from_spec(spec); spec.loader.exec_module(m)
DOM, AUTH = "www.tslaw.id", base64.b64encode(f'{m.CFG["user"]}:{m.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=180) as x:
                return json.loads(x.read())
        except Exception:
            time.sleep(4)
    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,title,content")
    if not isinstance(d, list):
        break
    posts += d
    if len(d) < 100:
        break
    page += 1

tanpa_wa, punya_faq_terlihat, ada_skema_faq, tanpa_keduanya = [], [], [], []
contoh_tombol = None
for p in posts:
    raw = p["content"]["raw"] or ""
    wa = bool(re.search(r"wa\.me|api\.whatsapp|whatsapp\.com", raw, re.I))
    skema = "FAQPage" in raw
    # bagian FAQ yang terlihat
    faq_vis = bool(re.search(r"<h[23][^>]*>[^<]*(?:pertanyaan yang sering|faq|tanya jawab)", raw, re.I)) or \
              len(re.findall(r"<h[34][^>]*>[^<]{6,120}\?</h[34]>", raw, re.I)) >= 2
    if not wa:
        tanpa_wa.append((p["id"], p["slug"], re.sub("<[^>]+>", "", p["title"]["raw"])[:50]))
    if faq_vis:
        punya_faq_terlihat.append(p["id"])
    if skema:
        ada_skema_faq.append(p["id"])
    if faq_vis and not skema:
        tanpa_keduanya.append(p["id"])
    if wa and not contoh_tombol:
        mm = re.search(r'<a[^>]+href="[^"]*(?:wa\.me|whatsapp)[^"]*"[^>]*>.*?</a>', raw, re.S | re.I)
        if mm:
            contoh_tombol = mm.group(0)

print(f"total artikel: {len(posts)}")
print(f"\n=== A. tanpa tombol WhatsApp: {len(tanpa_wa)} ===")
for i, s, j in tanpa_wa:
    print(f"   #{i:>5} /{s[:50]:<52} {j[:44]}")

print(f"\n=== B. punya bagian FAQ terlihat: {len(punya_faq_terlihat)} | sudah ada skema FAQ: {len(ada_skema_faq)} ===")
print(f"   punya FAQ terlihat TAPI belum ada skema: {len(tanpa_keduanya)}")
print(f"   contoh id: {tanpa_keduanya[:12]}")

print("\n=== C. contoh penanda tombol WhatsApp yang sudah dipakai ===")
print("   " + (contoh_tombol[:400] if contoh_tombol else "(tidak ditemukan)"))

json.dump({"tanpa_wa": [x[0] for x in tanpa_wa], "faq_tanpa_skema": tanpa_keduanya,
           "ada_skema": ada_skema_faq}, open(f"{WS}/drafts/tslaw_peta_perbaikan.json", "w"), indent=1)
print("\n→ drafts/tslaw_peta_perbaikan.json")
