#!/usr/bin/env python3
"""TSLaw: temukan blok yang memuat teks beranda (H1/H2) & halaman hubungi (lorem + nomor dummy)."""
import base64, json, re, time, urllib.request, urllib.error

DOM = "tslaw.id"
AUTH = base64.b64encode(b"bambangbot:EFKm EYGx VQCP Y9go ncPr uM2Y").decode()


def konten(pid):
    r = urllib.request.Request(f"https://{DOM}/wp-json/wp/v2/pages/{pid}?context=edit&_fields=content",
                               headers={"Authorization": f"Basic {AUTH}", "User-Agent": "Mozilla/5.0"})
    for _ in range(3):
        try:
            with urllib.request.urlopen(r, timeout=150) as x:
                return json.loads(x.read())["content"]["raw"]
        except Exception:
            time.sleep(4)
    return ""


def blok_sekitar(raw, kata, lebar=260):
    hasil = []
    for m in re.finditer(re.escape(kata), raw):
        awal = raw.rfind("<!-- wp:", 0, m.start())
        jenis = raw[awal:awal + 90].split("{")[0] if awal >= 0 else "(bukan dalam blok)"
        hasil.append({"posisi": m.start(), "blok": jenis.strip(), "sekitar": re.sub(r"\s+", " ", raw[max(0, m.start()-lebar):m.start()+lebar])})
    return hasil


raw = konten(833)
print(f"=== BERANDA (125k char) — teks 'Tito Suprianto Law Firm' ({len(blok_sekitar(raw, 'Tito Suprianto Law Firm'))} kemunculan) ===")
for b in blok_sekitar(raw, "Tito Suprianto Law Firm")[:8]:
    print(f"\n  posisi {b['posisi']} | blok: {b['blok']}")
    print(f"   …{b['sekitar']}…")

print("\n\n=== BERANDA — atribut heading (tag/h1/h2) ===")
for m in re.finditer(r'"tag":"(h[1-6])"', raw):
    sekitar = re.sub(r"\s+", " ", raw[max(0, m.start()-220):m.start()+220])
    print(f"\n  {m.group(1)} → …{sekitar}…")

raw2 = konten(10)
print("\n\n=== HUBUNGI — lorem ipsum ===")
for b in blok_sekitar(raw2, "Vestibulum")[:3]:
    print(f"  blok: {b['blok']} | posisi {b['posisi']}")
    print(f"   …{b['sekitar'][:400]}…")

print("\n=== HUBUNGI — nomor dummy ===")
for kata in ("+1 1184 4457 44", "+1 4487 4477 11", "1184 4457", "4487 4477", "Raya Tidar"):
    b = blok_sekitar(raw2, kata)
    print(f"  '{kata}': {len(b)} kemunculan" + (f" | blok: {b[0]['blok']}" if b else ""))
    if b:
        print(f"     …{b[0]['sekitar'][:330]}…")
