#!/usr/bin/env python3
"""Cek fakta #2928 pencemaran nama baik: KUHP baru (UU 1/2023) vs Pasal 310 lama,
UU ITE pasca UU 1/2024 (Pasal 27A, 45 ayat (4), Pasal 26), delik aduan, alat bukti."""
import json, re, urllib.request, urllib.error

WS = "/home/mantapman/.hermes/profiles/atun/workspace"
tok = json.load(open(f"{WS}/.serper_token.json"))
KEY = tok.get("api_key") or tok.get("key") or list(tok.values())[0]
UA = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/124 Safari/537.36"}


def cari(q, n=6):
    try:
        req = urllib.request.Request("https://google.serper.dev/search",
                                     data=json.dumps({"q": q, "gl": "id", "hl": "id", "num": n}).encode(),
                                     headers={"X-API-KEY": KEY, "Content-Type": "application/json"})
        with urllib.request.urlopen(req, timeout=60) as r:
            return json.load(r)
    except Exception as e:
        return {"error": str(e)[:100]}


def html(u):
    try:
        with urllib.request.urlopen(urllib.request.Request(u, headers=UA), timeout=90) as x:
            b = x.read(4000000)
    except urllib.error.HTTPError as e:
        return f"HTTP {e.code}"
    except Exception as e:
        return f"ERR {str(e)[:80]}"
    t = b.decode("utf-8", "replace")
    t = re.sub(r"<(script|style)[^>]*>.*?</\1>", " ", t, flags=re.S | re.I)
    t = re.sub(r"<[^>]+>", " ", t)
    t = re.sub(r"&nbsp;|&#160;", " ", t)
    return re.sub(r"\s+", " ", t).strip()


def cuplik(t, pat, lebar=500, n=2, sebelum=120):
    hits = list(re.finditer(pat, t, re.I))[:n]
    for m in hits:
        print(f"   [{pat}] ...{t[max(0,m.start()-sebelum):m.start()+lebar]}...\n")
    return bool(hits)


def organic(label, q):
    print(f"\n=== {label}")
    d = cari(q)
    if "error" in d:
        print("  ERR", d["error"]); return []
    out = []
    for o in d.get("organic", [])[:6]:
        print("  -", o.get("link"), "|", (o.get("snippet") or "")[:170])
        out.append(o)
    return out


organic("KUHP baru berlaku 2 Januari 2026", "KUHP baru UU 1/2023 berlaku 2 Januari 2026 pencemaran nama baik Pasal 433")
organic("Pasal 433 KUHP baru penistaan", "Pasal 433 KUHP baru menyerang kehormatan atau nama baik Pasal 434 fitnah")
organic("UU ITE Pasal 27A pasca UU 1/2024", "Pasal 27A UU ITE setelah UU 1/2024 pencemaran nama baik unsur")
organic("Pasal 45 ayat 4 UU ITE ancaman pidana", "Pasal 45 ayat 4 UU ITE pidana penjara 4 tahun denda Rp750.000.000")
organic("delik aduan pencemaran nama baik KUHP baru", "delik aduan pencemaran nama baik KUHP baru Pasal 25 UU 1/2023 pengaduan")
organic("hak jawab UU Pers", "Pasal 5 UU 40/1999 hak jawab hak koreksi pers")

print("\n=== teks resmi: Pasal 433/434 KUHP (peraturan.bpk.go.id / jdih)")
for u in ["https://peraturan.bpk.go.id/Details/249383/uu-no-1-tahun-2023",
          "https://www.hukumonline.com/klinik/a/pencemaran-nama-baik-dalam-kuhp-baru-lt6510d4d4d0f00/"]:
    t = html(u)
    print(" ", u, "->", len(t), t[:100].replace("\n", " "))
    if len(t) > 2000:
        cuplik(t, r"Pasal 433", 600, 2)
        cuplik(t, r"Pasal 434", 500, 1)
