#!/usr/bin/env python3
"""TSLaw perbaikan harian — langkah 1: baca keadaan TERKINI satu artikel dari REST."""
import base64, json, re, sys, time, urllib.request, importlib.util

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)
AUTH = base64.b64encode(f'{m.CFG["user"]}:{m.CFG["pass"]}'.encode()).decode()
H = {"Authorization": f"Basic {AUTH}", "User-Agent": "Mozilla/5.0",
     "Content-Type": "application/json"}

def rest(path, data=None, method=None):
    req = urllib.request.Request(f"https://www.tslaw.id{path}", headers=H,
                                 data=json.dumps(data).encode() if data else None, method=method)
    for i in range(3):
        try:
            with urllib.request.urlopen(req, timeout=120) as x:
                return json.loads(x.read()), x.status
        except urllib.error.HTTPError as e:
            return {"err": e.code, "body": e.read()[:300].decode(errors="replace")}, e.code
        except Exception as e:
            last = str(e); time.sleep(4)
    return {"err": last}, 0

PID = int(sys.argv[1]) if len(sys.argv) > 1 else 3230
p, st = rest(f"/wp-json/wp/v2/posts/{PID}?context=edit")
if not isinstance(p, dict) or "id" not in p:
    print("GAGAL:", p); sys.exit(1)
raw = p["content"]["raw"]
teks = re.sub(r"<[^>]+>", " ", raw)
kata = len(teks.split())
meta = p.get("meta") or {}
print("ID            :", p["id"])
print("judul         :", p["title"]["raw"])
print("slug / link   :", p["slug"], "|", p["link"])
print("status/mod    :", p["status"], p["modified"])
print("kata (raw)    :", kata)
print("yoast focus   :", meta.get("_yoast_wpseo_focuskw"))
print("yoast title   :", meta.get("_yoast_wpseo_title"))
print("yoast metadesc:", meta.get("_yoast_wpseo_metadesc"))
print("wa.me ada     :", sorted(set(re.findall(r"wa\.me/(\d+)", raw))) or "TIDAK ADA")
print("FAQPage schema:", "FAQPage" in raw)
print("H2/H3         :", len(re.findall(r"<h2", raw)), "/", len(re.findall(r"<h3", raw)))
for kata_kunci in ["biaya", "notaris", "tanpa notaris", "gratis", "tarif", "honor"]:
    print(f"  sebut «{kata_kunci}»: {len(re.findall(kata_kunci, teks, re.I))}x")
print("tautan pilar  :", "law-firm-surabaya" in raw)
out = f"{WS}/tslaw_pemulihan/perbaikan_{time.strftime('%Y%m%d')}"
import os; os.makedirs(out, exist_ok=True)
open(f"{out}/post_{PID}_sebelum.txt", "w").write(raw)
json.dump({"id": p["id"], "title": p["title"]["raw"], "meta": meta, "kata": kata},
          open(f"{out}/post_{PID}_sebelum_meta.json", "w"), indent=1, ensure_ascii=False)
print("\n→ salinan:", out)
