#!/usr/bin/env python3
"""TSLaw: verifikasi hasil kerja — pilar, artikel klaster, penautan internal, dan sitemap."""
import html, re, time, urllib.request, urllib.error
from collections import Counter

UA = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/124.0 Safari/537.36"}
DOM = "https://www.tslaw.id"
BARU = {
    "pilar": "/law-firm-surabaya/",
    "klaster 1": "/biaya-jasa-law-firm-surabaya/",
    "klaster 2": "/cara-memilih-law-firm-surabaya-untuk-perusahaan/",
    "klaster 3": "/tujuh-situasi-perusahaan-butuh-law-firm/",
}
TAUT = ["/pengacara-gugat-cerai-surabaya/", "/8-langkah-legalitas-perusahaan-surabaya/",
        "/6-manfaat-konsultasi-hukum-gratis-surabaya-sebelum-mengambil-keputusan-bisnis/",
        "/6-kelebihan-law-firm-surabaya-profesional-dibanding-pengacara-individu/"]


def ambil(u, timeout=120):
    try:
        with urllib.request.urlopen(urllib.request.Request(f"{DOM}{u}?v={int(time.time())}", headers=UA), timeout=timeout) as x:
            return x.status, x.read().decode("utf-8", "replace")
    except urllib.error.HTTPError as e:
        return e.code, ""
    except Exception as e:
        return 0, str(e)[:80]


print("=== 1. halaman baru ===")
for nama, u in BARU.items():
    st, h = ambil(u)
    t = re.search(r"<title[^>]*>(.*?)</title>", h, re.S)
    de = re.search(r'<meta name="description" content="([^"]*)"', h)
    h1 = re.findall(r"<h1[^>]*>(.*?)</h1>", h, re.S)
    kata = len(re.sub(r"<[^>]+>", " ", h).split())
    print(f"\n   {nama:<10} {u}")
    print(f"      status {st} | <title>: {html.unescape(t.group(1)).strip()[:80] if t else '-'}")
    print(f"      deskripsi {len(html.unescape(de.group(1))) if de else 0} char | H1: "
          f"{html.unescape(re.sub('<[^>]+>','',h1[0])).strip()[:60] if h1 else '-'}")
    print(f"      tombol WA: {len(re.findall('wa.me', h))} | skema ld+json: {h.count('application/ld+json')} | "
          f"FAQPage: {'FAQPage' in h}")

print("\n=== 2. penautan internal ke pilar (uji beberapa artikel) ===")
for u in TAUT:
    st, h = ambil(u)
    n = len(re.findall(r'href="https://www\.tslaw\.id/law-firm-surabaya/"', h))
    anchor = re.findall(r'<a href="https://www\.tslaw\.id/law-firm-surabaya/">([^<]{3,60})</a>', h)
    print(f"   status {st} | tautan ke pilar: {n} | anchor: {anchor[:1]} | {u[:56]}")

print("\n=== 3. sitemap: apakah 4 halaman baru sudah masuk ===")
st, sm = ambil("/post-sitemap.xml")
if st == 200:
    lok = re.findall(r"<loc>([^<]+)</loc>", sm)
    print(f"   status {st} | total URL di post-sitemap: {len(lok)}")
    for u, _ in BARU.items():
        ada = any(BARU[u].strip("/") in x for x in lok)
        print(f"      {'✅' if ada else '❌'} {BARU[u]}")
else:
    print(f"   status {st}")

print("\n=== 4. halaman pilar: apakah menerima tautan dari kategori/arsip ===")
st, h = ambil("/?s=law+firm+surabaya")
print(f"   pencarian internal 'law firm surabaya': status {st} | pilar muncul: {BARU['pilar'] in h}")
