#!/usr/bin/env python3
"""Simpan daftar konten TSC yang masih memuat merek/domain lama + nomor placeholder."""
import base64, 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"}
TANDA = ["Klinik DNI", "klinikdnisidoarjo.com", "klinikdnikrian.com", "0812-XXXX"]


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}
        except Exception:
            time.sleep(4)
    return {}


baris = []
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
        for x in d:
            raw = x["content"]["raw"]
            kena = {k: len(re.findall(re.escape(k), raw, re.I)) for k in TANDA}
            if any(kena.values()):
                baris.append({"jenis": jenis, "id": x["id"], "link": x["link"],
                              "judul": re.sub(r"<[^>]+>", "", str(x["title"]["rendered"]))[:80],
                              "temuan": {k: v for k, v in kena.items() if v}})
        if len(d) < 100:
            break
        page += 1

total = {}
for b in baris:
    for k, v in b["temuan"].items():
        total[k] = total.get(k, 0) + v

with open(f"{WS}/drafts/tsc_sisa_merek_lama.md", "w") as f:
    f.write("# TSC — sisa merek dan domain lama di konten (7 Okt 2026)\n\n")
    f.write("Ini di luar pekerjaan nomor WhatsApp (nomor sudah beres semua). Berisi teks dan tautan\n")
    f.write("yang masih menunjuk merek atau domain lama. Perlu keputusan Bos sebelum diubah.\n\n")
    f.write("## Rekap\n\n")
    for k, v in sorted(total.items(), key=lambda x: -x[1]):
        f.write(f"- {k}: {v} kemunculan\n")
    f.write(f"\nJumlah konten terdampak: {len(baris)}\n\n")
    f.write("## Daftar konten\n\n")
    for b in sorted(baris, key=lambda x: -sum(x["temuan"].values())):
        f.write(f"- {b['judul']}\n  {b['link']}\n  temuan: {b['temuan']} (`{b['jenis']} #{b['id']}`)\n")

json.dump(baris, open(f"{WS}/drafts/tsc_sisa_merek_lama.json", "w"), ensure_ascii=False, indent=1)
print(f"konten terdampak: {len(baris)}")
for k, v in sorted(total.items(), key=lambda x: -x[1]):
    print(f"  {k}: {v}")
print("→ drafts/tsc_sisa_merek_lama.md + .json")
