#!/usr/bin/env python3
"""TSC: lacak dari mana tautan WA nomor lain berasal (tema, widget, atau isi halaman)."""
import base64, html, json, re, urllib.request, importlib.util

WS = "/home/mantapman/.hermes/profiles/atun/workspace"
spec = importlib.util.spec_from_file_location("cfg_tsc", f"{WS}/cfg_tsc.py")
m = importlib.util.module_from_spec(spec); spec.loader.exec_module(m)
UA = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/124 Safari/537.36"}
AUTH = base64.b64encode(f'{m.CFG["user"]}:{m.CFG["pass"]}'.encode()).decode()

FOKUS = ("6285117444417", "6281335114324", "6281935000624")

h = urllib.request.urlopen(urllib.request.Request(f'https://www.{m.CFG["domain"]}/', headers=UA), timeout=120).read().decode("utf-8", "replace")
print("=== tautan WA nomor lain di beranda + konteksnya ===")
for nomor in FOKUS:
    for mm in re.finditer(re.escape(nomor), h):
        s = max(0, mm.start() - 320); e = min(len(h), mm.end() + 120)
        cuplik = re.sub(r"\s+", " ", h[s:e])
        # cari petunjuk pemilik: kelas/elemen terdekat
        jenis = []
        if "elementor" in cuplik.lower():
            jenis.append("elementor")
        if re.search(r'class="[^"]*(nav|menu|header|footer)[^"]*"', cuplik, re.I):
            jenis.append("navigasi/header/footer")
        if re.search(r'class="[^"]*(widget|floating|chat|chaty|button)[^"]*"', cuplik, re.I):
            jenis.append("widget/float button")
        print(f"\n   [{nomor}] petunjuk: {jenis or 'tidak jelas'}")
        print(f"      …{cuplik[:300]}…")

print("\n=== apakah nomor itu ada di isi halaman (yang bisa saya edit)? ===")
for pid, nama in ((409, "beranda"), (1585, "articles"), (1531, "tentang-kami")):
    r = urllib.request.Request(f'https://{m.CFG["domain"]}/wp-json/wp/v2/pages/{pid}?context=edit&_fields=content',
                               headers={"Authorization": f"Basic {AUTH}", **UA})
    try:
        with urllib.request.urlopen(r, timeout=120) as x:
            raw = json.loads(x.read())["content"]["raw"]
        temuan = [n for n in FOKUS if n in raw]
        print(f"   #{pid} {nama}: {temuan if temuan else 'tidak ada nomor lain di isi halaman'}")
    except Exception as e:
        print(f"   #{pid} {nama}: gagal {str(e)[:40]}")
