#!/usr/bin/env python3
"""Survei cepat 14 Okt 2026: kesehatan situs + bentuk permalink + daftar post untuk cek kanibalisasi."""
import base64, json, re, urllib.request, urllib.error, 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"}
OUT = "/home/mantapman/.hermes/profiles/atun/workspace"


def cek(u, timeout=45):
    t = time.time()
    try:
        r = urllib.request.Request(u, headers=UA)
        with urllib.request.urlopen(r, timeout=timeout) as x:
            return x.status, round(time.time() - t, 2)
    except urllib.error.HTTPError as e:
        return e.code, round(time.time() - t, 2)
    except Exception as e:
        return f"ERR {str(e)[:40]}", round(time.time() - t, 2)


def rest(path):
    h = {"Authorization": f"Basic {AUTH}", **UA}
    r = urllib.request.Request(f"https://{DOM}{path}", headers=h)
    for i in range(4):
        try:
            with urllib.request.urlopen(r, timeout=180) as x:
                return x.status, json.loads(x.read())
        except urllib.error.HTTPError as e:
            return e.code, e.read().decode()[:300]
        except Exception as e:
            print(f"  (ulang {i+1}: {str(e)[:60]})")
            time.sleep(8)
    return 0, "gagal"


print("=== KESEHATAN SITUS ===")
for u in ["https://www.tslaw.id/", "https://tslaw.id/", "https://www.tslaw.id/layanan/",
          "https://www.tslaw.id/hubungi/", "https://www.tslaw.id/wp-json/"]:
    print(f"  {cek(u)[0]}  {cek(u)[1]}s  {u}")

print("\n=== BENTUK PERMALINK (uji dua bentuk) ===")
for u in ["https://www.tslaw.id/pengacara-surat-wasiat/", "https://www.tslaw.id/pengacara-surat-wasiat.htm",
          "https://www.tslaw.id/pengacara-terbaik-surabaya/", "https://www.tslaw.id/pengacara-terbaik-surabaya.htm",
          "https://www.tslaw.id/pengacara-pencemaran-nama-baik-surabaya/"]:
    print(f"  {cek(u)[0]}  {u}")

print("\n=== POST (publish/future/draft) ===")
semua, hal = [], 1
while True:
    st, p = rest(f"/wp-json/wp/v2/posts?status=publish,future,draft&per_page=100&page={hal}"
                 f"&context=edit&_fields=id,slug,link,status,title,meta,content")
    if not isinstance(p, list) or not p:
        break
    semua += p
    if len(p) < 100:
        break
    hal += 1
print(f"  total {len(semua)} post")
json.dump(semua, open(f"{OUT}/tslaw_posts_20261014.json", "w"), ensure_ascii=False)

print("\n=== DETEKSI KANIBALISASI 'perdata'/'gugatan' ===")
for p in semua:
    m = p.get("meta", {}) or {}
    fk = (m.get("_yoast_wpseo_focuskw") or "").lower()
    t = p["title"]["raw"] if isinstance(p["title"], dict) else str(p["title"])
    if "perdata" in fk or "gugatan" in fk or "perdata" in t.lower() or "gugatan" in t.lower():
        print(f"  #{p['id']:<5} {p['status']:<8} fokus='{fk}'  {t}")

print("\n=== KATEGORI & TAG YANG SUDAH ADA ===")
st, kat = rest("/wp-json/wp/v2/categories?per_page=100&_fields=id,name,slug,count")
for k in kat:
    print(f"  kat #{k['id']:<4} {k['name']} ({k['count']})")
