#!/usr/bin/env python3
"""Ambil post 3057 + periksa struktur (WA, pilar, FAQ, skema, Yoast) untuk perbaikan harian 2026-10-07."""
import base64, html as htmlmod, json, os, re, sys
import 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"}
PID = 3057
OUT = f"{WS}/tslaw_pemulihan/perbaikan_20261007"
os.makedirs(OUT, exist_ok=True)


def rest_get(path, timeout=120):
    req = urllib.request.Request(BASE + path, headers=HDR)
    with urllib.request.urlopen(req, timeout=timeout) as r:
        return json.load(r)


def wc(s):
    t = htmlmod.unescape(re.sub(r"<(script|style).*?</\1>", " ", s, flags=re.S))
    return len(re.sub(r"<[^>]+>", " ", t).split())


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

meta = p.get("meta") or {}
print("slug      :", p["slug"])
print("status    :", p["status"], "| modified:", p["modified"])
print("judul raw :", p["title"]["raw"])
print("kata      :", wc(raw))
print("fokus     :", meta.get("_yoast_wpseo_focuskw"))
print("seo title :", meta.get("_yoast_wpseo_title"))
print("meta desc :", meta.get("_yoast_wpseo_metadesc"))
print("WA        :", sorted(set(re.findall(r"wa\.me/\d+", raw))))
print("pilar     :", raw.count("law-firm-surabaya"))
print("FAQPage   :", raw.count("FAQPage"), "| <h3>:", len(re.findall(r"<h3", raw)))
print("H2        :", len(re.findall(r"<h2", raw)))
print("kamu/TSLaw:", raw.lower().count("kamu"), raw.count("TSLaw"))
print("p kosong  :", raw.count("<p></p>"))
print("block     :", sorted(set(re.findall(r"<!-- wp:([a-z/]+)", raw)))[:40])
print("\n---- HEADINGS ----")
for m in re.finditer(r"<h([23])[^>]*>(.*?)</h\1>", raw, flags=re.S):
    print(f"  h{m.group(1)}: {re.sub(r'<[^>]+>','',m.group(2)).strip()}")
print("\n---- 1500 char pertama ----")
print(raw[:1500])
print("\n---- 1800 char terakhir ----")
print(raw[-1800:])
