#!/usr/bin/env python3
"""TSLaw: pemeriksaan langsung situs — kestabilan, kecepatan, robots, sitemap, konversi WA, pelacak."""
import html, re, time, urllib.request, urllib.error

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"


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


print("=== kecepatan & kestabilan (3 kali) ===")
for i in range(3):
    st, h, d, head = ambil(DOM + "/?v=%d" % int(time.time()))
    print(f"   {i+1}. status {st} | {d:5.2f}s | {len(h):>7} byte HTML | cf-cache-status: {head.get('cf-cache-status')}")
    time.sleep(2)

print("\n=== halaman penting ===")
for p in ("/", "/layanan/", "/artikel/", "/tentang/", "/hubungi/", "/robots.txt", "/sitemap_index.xml"):
    st, isi, d, _ = ambil(DOM + p)
    j = re.search(r"<title[^>]*>(.*?)</title>", isi, re.S)
    judul = html.unescape(re.sub("<[^>]+>", "", j.group(1))).strip()[:56] if j else "-"
    print(f"   {p:<18} {st} | {d:5.2f}s | {len(isi):>7} byte | {judul}")

print("\n=== robots.txt ===")
st, rb, _, _ = ambil(DOM + "/robots.txt")
print("   " + (rb.replace("\n", "\n   ")[:500] if st == 200 else f"status {st}"))

print("\n=== sitemap ===")
st, sm, _, _ = ambil(DOM + "/sitemap_index.xml")
if st == 200:
    subs = re.findall(r"<loc>([^<]+)</loc>", sm)
    print(f"   sub-sitemap: {len(subs)}")
    total = 0
    for s in subs[:6]:
        st2, isi2, _, _ = ambil(s, timeout=60)
        n = len(re.findall(r"<loc>", isi2))
        total += n
        print(f"      {s.replace(DOM, '')[:44]:<46} {n} URL")
    print(f"   total URL: {total}")
else:
    print(f"   status {st}")

print("\n=== pelacakan & tombol WhatsApp ===")
st, h, _, _ = ambil(DOM + "/")
print("   GA4   :", sorted(set(re.findall(r"G-[A-Z0-9]{8,}", h))) or "tidak ada")
print("   GTM   :", sorted(set(re.findall(r"GTM-[A-Z0-9]+", h))) or "tidak ada")
print("   tautan WA di beranda:", len(re.findall(r"wa\.me|api\.whatsapp", h, re.I)))
for u in ("/layanan/", "/hubungi/"):
    st2, h2, _, _ = ambil(DOM + u)
    print(f"   tautan WA di {u:<12}:", len(re.findall(r"wa\.me|api\.whatsapp", h2, re.I)),
          "| nomor:", sorted(set(re.findall(r"wa\.me/(\d+)", h2)))[:3])
