#!/usr/bin/env python3
"""Lihat halaman TSC yang sudah menyasar 'dokter kulit krian' agar artikel baru tidak bertabrakan."""
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
AUTH = base64.b64encode(f"{CFG['user']}:{CFG['pass']}".encode()).decode()
UA = {"User-Agent": "Mozilla/5.0"}


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


page = 1
kand = []
while True:
    d = rest(f"/wp-json/wp/v2/posts?per_page=100&page={page}&status=publish&context=edit&_fields=id,slug,link,title,content")
    if not isinstance(d, list) or not d:
        break
    for x in d:
        t = (x["slug"] + " " + re.sub(r"<[^>]+>", "", str(x["title"]["rendered"]))).lower()
        if "krian" in t and ("dokter" in t or "kulit" in t or "klinik" in t):
            raw = x["content"]["raw"]
            kand.append((len(raw.split()), x["id"], x["slug"], x["link"]))
    if len(d) < 100:
        break
    page += 1

kand.sort(reverse=True)
print(f"halaman bernuansa Krian: {len(kand)}\n")
for kata, pid, slug, link in kand[:12]:
    print(f"  {kata:>5} kata | #{pid:<5} /{slug[:66]}")
    print(f"        {link[:92]}")
json.dump(kand, open(f"{WS}/drafts/tsc_halaman_krian.json", "w"), ensure_ascii=False, indent=1)
