#!/usr/bin/env python3
"""TSLaw: verifikasi menyeluruh setelah purge Cloudflare."""
import re, urllib.request, urllib.error, html

UA = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124 Safari/537.36"}


def ambil(u):
    try:
        r = urllib.request.urlopen(urllib.request.Request(u, headers=UA), timeout=90)
        return r.status, r.read().decode("utf-8", "replace"), dict(r.headers)
    except urllib.error.HTTPError as e:
        return e.code, "", dict(e.headers)
    except Exception as e:
        return 0, "", {"err": str(e)[:60]}


print("=== 1. robots.txt ===")
st, isi, h = ambil("https://www.tslaw.id/robots.txt")
aturan = [b.strip() for b in isi.splitlines() if b.strip() and not b.strip().startswith("#")]
print(f"   HTTP {st} | {len(isi)} char | cf={h.get('cf-cache-status')} | aturan aktif: {len(aturan)}")
print(f"   sitemap tercantum: {'ya' if 'Sitemap:' in isi else 'TIDAK'}")

print("\n=== 2. halaman utama ===")
for u in ("/", "/layanan/", "/tentang/", "/hubungi/", "/artikel/"):
    st, isi, h = ambil(f"https://www.tslaw.id{u}")
    t = re.search(r"<title>(.*?)</title>", isi, re.S)
    print(f"   {st} | {u:<14} {len(isi)//1024:>4} KB | cf={h.get('cf-cache-status')} | {t.group(1)[:50] if t else ''}")

print("\n=== 3. dua artikel listikel ===")
for u in ("/pengacara-gugat-cerai-surabaya/", "/pengacara-surat-wasiat/"):
    st, isi, h = ambil(f"https://www.tslaw.id{u}")
    t = re.search(r"<title>(.*?)</title>", isi, re.S)
    kata = len(re.sub(r"\s+", " ", html.unescape(re.sub(r"<[^>]+>", " ", re.sub(r"<(script|style)[^>]*>.*?</\1>", " ", isi, flags=re.S | re.I)))).split())
    md = re.search(r'<meta name="description" content="([^"]*)"', isi)
    ke_beranda = isi.count('href="https://www.tslaw.id/"')
    print(f"   {st} | {u}")
    print(f"        judul: {t.group(1)[:60] if t else '-'}")
    print(f"        {kata} kata | meta {len(md.group(1)) if md else 0} char | "
          f"tombol WA {'ada' if 'wa.me' in isi else 'TIDAK'} | schema FAQ {'ada' if 'FAQPage' in isi else 'TIDAK'}")
    print(f"        link ke /layanan/: {isi.count('/layanan/')}x | ke beranda: {ke_beranda}x | "
          f"ke alamat lama: {isi.count('practice-areas')}x")

print("\n=== 4. sitemap ===")
for u in ("/sitemap_index.xml", "/post-sitemap.xml", "/page-sitemap.xml"):
    st, isi, _ = ambil(f"https://www.tslaw.id{u}")
    print(f"   {st} | {u:<22} {len(re.findall(r'<loc>', isi))} entri")
st, isi, _ = ambil("https://www.tslaw.id/post-sitemap.xml")
for slug in ("pengacara-gugat-cerai-surabaya", "pengacara-surat-wasiat"):
    print(f"   artikel baru '{slug}' ada di sitemap: {'YA' if slug in isi else 'TIDAK'}")

print("\n=== 5. halaman yang seharusnya tidak terindeks ===")
for u in ("/practice-areas/", "/sample-page/"):
    st, _, _ = ambil(f"https://www.tslaw.id{u}")
    print(f"   {st} | {u}")
