#!/usr/bin/env python3
"""TSLaw: kekuatan on-page — klaster konten lokal, tautan internal, dan penargetan beranda."""
import base64, json, re, time, urllib.request, importlib.util
from collections import Counter

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


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


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

print(f"=== artikel terbit: {len(posts)} ===")
tautan = Counter()
kata_kunci = {"law firm surabaya": 0, "konsultan hukum": 0, "pengacara surabaya": 0, "advokat": 0,
              "law firm": 0, "surabaya": 0}
surabaya_judul = []
for p in posts:
    raw = p.get("content", {}).get("raw", "") or ""
    lower = raw.lower()
    judul = re.sub("<[^>]+>", "", p["title"]["raw"])
    if "surabaya" in judul.lower() or "surabaya" in p["slug"]:
        surabaya_judul.append((p["id"], judul[:64], len(re.sub(r"<[^>]+>", " ", raw).split())))
    for k in kata_kunci:
        kata_kunci[k] += lower.count(k)
    for t in re.findall(r'href="(https://www\.tslaw\.id[^"]*)"', raw):
        tautan[t.rstrip("/")] += 1

print("   frasa (total kemunculan di seluruh artikel):")
for k, v in kata_kunci.items():
    print(f"      {k:<20} {v}")

print(f"\n   artikel yang menyasar Surabaya (judul/slug): {len(surabaya_judul)}")
for i, j, w in surabaya_judul[:14]:
    print(f"      #{i:>5} {w:>4} kata | {j}")

print("\n=== tautan internal paling sering dituju ===")
for u, n in tautan.most_common(12):
    print(f"   {n:>4}x {u.replace('https://www.tslaw.id', '')[:60]}")

print("\n=== halaman utama & navigasinya ===")
pages = rest("/wp-json/wp/v2/pages?per_page=50&context=edit&_fields=id,slug,title,content")
for p in pages if isinstance(pages, list) else []:
    raw = p["content"]["raw"]
    jml_kata = len(re.sub(r"<[^>]+>", " ", raw).split())
    jml_link = len(re.findall(r"<a ", raw))
    print(f"   #{p['id']:>5} /{p['slug']:<12} {jml_kata:>5} kata | {jml_link:>3} tautan | {re.sub('<[^>]+>','',p['title']['raw'])[:40]}")
