#!/usr/bin/env python3
"""Periksa bentuk lengkap tombol WhatsApp yang memuat nomor lama di konten TSC (posts + pages)."""
import base64, html, importlib.util, json, re, time, urllib.error, urllib.request

WS = "/home/mantapman/.hermes/profiles/atun/workspace"
spec = importlib.util.spec_from_file_location("cfg", f"{WS}/cfg_tsc.py")
m = importlib.util.module_from_spec(spec)
spec.loader.exec_module(m)
CFG = m.CFG
DOM = CFG["domain"]
AUTH = base64.b64encode(f"{CFG['user']}:{CFG['pass']}".encode()).decode()
UA = {"User-Agent": "Mozilla/5.0"}
LAMA = ["6285194936363", "6281335114324"]


def rest(path):
    h = {"Authorization": f"Basic {AUTH}", **UA}
    r = urllib.request.Request(f"https://{DOM}{path}", headers=h)
    for _ in range(3):
        try:
            with urllib.request.urlopen(r, timeout=180) as x:
                return json.loads(x.read())
        except urllib.error.HTTPError as e:
            return {"err": e.code, "msg": e.read().decode()[:120]}
        except Exception:
            time.sleep(4)
    return {}


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

print(f"total konten diperiksa: {len(semua)} (posts + pages)")
kena = []
for jenis, x in semua:
    raw = x["content"]["raw"]
    if any(n in raw for n in LAMA):
        kena.append((jenis, x, raw))

print(f"konten yang memuat nomor lama: {len(kena)}\n")
for jenis, x, raw in kena[:3]:
    print(f"=== {jenis} #{x['id']} · {html.unescape(x['title']['raw'])[:70]}")
    print(f"    {x['link']}")
    for m2 in re.finditer(r"<a[^>]{0,400}?(?:wa\.me|api\.whatsapp)[^>]{0,400}?>.*?</a>", raw, re.S):
        potong = re.sub(r"\s+", " ", m2.group(0))
        print(f"    TOMBOL: {potong[:420]}")
    print()

json.dump([{"jenis": j, "id": x["id"], "slug": x["slug"], "link": x["link"],
            "judul": html.unescape(x["title"]["raw"]),
            "jumlah": {n: raw.count(n) for n in LAMA if n in raw}}
           for j, x, raw in kena],
          open(f"{WS}/drafts/tsc_nomor_lama_di_konten.json", "w"), ensure_ascii=False, indent=1)
print("→ drafts/tsc_nomor_lama_di_konten.json")
