#!/usr/bin/env python3
"""Survei 25 Okt: kondisi situs, daftar artikel publish (judul + fokus + kata) untuk tautan internal."""
import base64, json, re, urllib.request, time

DOM = "tslaw.id"
USER, PASS = "bambangbot", "EFKm EYGx VQCP Y9go ncPr uM2Y"
AUTH = base64.b64encode(f"{USER}:{PASS}".encode()).decode()
UA = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/124 Safari/537.36"}


def rest(path):
    r = urllib.request.Request(f"https://{DOM}{path}", headers={"Authorization": f"Basic {AUTH}", **UA})
    with urllib.request.urlopen(r, timeout=90) as resp:
        return json.loads(resp.read().decode())


def pub(url, nohead=False):
    h = UA if nohead else {**UA, "Cache-Control": "no-cache"}
    try:
        r = urllib.request.Request(url, headers=h)
        with urllib.request.urlopen(r, timeout=60) as resp:
            return resp.status, len(resp.read())
    except urllib.error.HTTPError as e:
        return e.code, 0
    except Exception as e:
        return str(e)[:40], 0


t0 = time.time()
print("beranda www:", pub("https://www.tslaw.id/?nocache=%d" % int(time.time())), round(time.time() - t0, 2), "s")
print("permalinks:", "/layanan/", pub("https://www.tslaw.id/layanan/"),
      "| /hubungi/", pub("https://www.tslaw.id/hubungi/"),
      "| contoh .htm", pub("https://www.tslaw.id/panduan-cerai-gugat.htm"))

posts = rest("/wp-json/wp/v2/posts?per_page=100&status=publish&context=edit&_fields=id,slug,link,title,content,meta")
print("publish:", len(posts))


def kata(html):
    t = re.sub(r"<[^>]+>", " ", html)
    return len(re.findall(r"\w+", t))


rows = []
for p in posts:
    fokus = (p.get("meta") or {}).get("_yoast_wpseo_focuskw", "") or ""
    rows.append((p["id"], p["slug"], p["title"]["raw"][:64], fokus, kata(p["content"]["raw"])))
rows.sort(key=lambda r: r[0], reverse=True)
for r in rows:
    print(f"{r[0]} | {r[3][:38]:38} | {r[4]:4} | {r[1][:52]}")
json.dump([{"id": r[0], "slug": r[1], "judul": r[2], "fokus": r[3], "kata": r[4], "link": p["link"]}
           for r, p in zip(rows, sorted(posts, key=lambda x: x["id"], reverse=True))],
          open("tslaw_listikel/_publish25.json", "w"), ensure_ascii=False)

# fokus kembar?
cek = "pengacara mediasi surabaya"
for r in rows:
    if "mediasi" in r[3].lower() or "arbitrase" in r[3].lower():
        print("FOKUS MEDIASI/ARBITRASE:", r[0], r[1], "|", r[3], "|", r[4], "kata")
