#!/usr/bin/env python3
"""Ambil + analisis post 3228 tslaw.id (jalur perbaikan 11 Okt 2026)."""
import base64, json, os, re, sys, urllib.request, urllib.error

WS = "/home/mantapman/.hermes/profiles/atun/workspace"
sys.path.insert(0, WS)
from cfg_tslaw import CFG

AUTH = base64.b64encode(f"{CFG['user']}:{CFG['pass']}".encode()).decode()
BASE = "https://tslaw.id/wp-json/wp/v2"
HDR = {"Authorization": f"Basic {AUTH}", "User-Agent": "Mozilla/5.0",
       "Content-Type": "application/json"}
OUT = f"{WS}/tslaw_pemulihan/perbaikan_20261011"
os.makedirs(OUT, exist_ok=True)
PID = 3228


def api(method, path, payload=None, timeout=180):
    req = urllib.request.Request(BASE + path, headers=HDR, method=method,
                                 data=json.dumps(payload).encode() if payload else None)
    with urllib.request.urlopen(req, timeout=timeout) as r:
        return json.load(r)


p = api("GET", f"/posts/{PID}?context=edit")
raw = p["content"]["raw"]
json.dump(p, open(f"{OUT}/post_{PID}_SEBELUM.json", "w"), ensure_ascii=False, indent=1)
open(f"{OUT}/post_{PID}_SEBELUM.html", "w").write(raw)

txt = re.sub(r"<[^>]+>", " ", re.sub(r"<(script|style)[^>]*>.*?</\1>", " ", raw, flags=re.S | re.I))
kata_audit = len(txt.split())
skema = re.findall(r'<script[^>]*type="application/ld\+json"[^>]*>.*?</script>', raw, flags=re.S | re.I)
tanpa_skema = len(re.sub(r"<[^>]+>", " ", re.sub(r"<script.*?</script>", " ", raw, flags=re.S | re.I)).split())

print("link    :", p["link"])
print("slug    :", p["slug"])
print("status  :", p["status"])
print("judul   :", p["title"]["raw"])
print("tanggal :", p.get("date"))
print("kata audit:", kata_audit, "| tanpa skema:", tanpa_skema)
print("H2      :", len(re.findall(r"<h2", raw, re.I)), "| H3:", len(re.findall(r"<h3", raw, re.I)))
print("WA      :", sorted(set(re.findall(r"wa\.me/(\d+)", raw))))
print("skema   :", len(skema), [s[:60] for s in re.findall(r'"@type"\s*:\s*"([^"]+)"', " ".join(skema))][:8])
print("pilar   :", len(re.findall(r"law-firm-surabaya", raw)))
meta = p.get("meta") or {}
print("meta keys:", sorted(meta.keys()))
print("fokus   :", meta.get("_yoast_wpseo_focuskw"))
print("seo_ttl :", meta.get("_yoast_wpseo_title"))
print("seo_desc:", meta.get("_yoast_wpseo_metadesc"))
print()
print("=== H2/H3 ===")
for m in re.finditer(r"<h([23])[^>]*>(.*?)</h\1>", raw, flags=re.S | re.I):
    print(" " * (int(m.group(1)) - 2) * 2, f"h{m.group(1)}:", re.sub(r"<[^>]+>", "", m.group(2)).strip()[:95])
print()
print("=== tautan internal ===")
for m in re.finditer(r'<a[^>]+href="([^"]+)"[^>]*>(.*?)</a>', raw, flags=re.S | re.I):
    href = m.group(1)
    if "tslaw.id" in href or href.startswith("/"):
        print(" ", href, "|", re.sub(r"<[^>]+>", "", m.group(2)).strip()[:60])
print()
print("=== 400 char awal ===")
print(raw[:400])
