#!/usr/bin/env python3
"""Kutip teks Pasal 433/434 KUHP baru + Pasal 27A/45(4) UU ITE pasca UU 1/2024 dari sumber yang bisa dibuka."""
import re, urllib.request, urllib.error

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


def html(u):
    try:
        with urllib.request.urlopen(urllib.request.Request(u, headers=UA), timeout=120) 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 c(t, pat, lebar=700, n=2, sebelum=150):
    print(f"   [{pat}]")
    for m in list(re.finditer(pat, t, re.I))[:n]:
        print(f"    ...{t[max(0,m.start()-sebelum):m.start()+lebar]}...\n")


urls = [
    ("SUKOHARJO 433", "https://jdih.sukoharjokab.go.id/berita/detail/bunyi-pasal-pencemaran-nama-baik-kuhp-baru", [r"Pasal 433", r"Pasal 434"]),
    ("HUKUMONLINE klinik 433", "https://www.hukumonline.com/klinik/a/pasal-433-kuhp-baru-tentang-pencemaran-nama-baik-lt65b71f5a49552/", [r"Pasal 433", r"sembilan bulan", r"Pasal 434"]),
    ("KEMENKUM BPSDM", "https://bpsdm.kemenkum.go.id/artikel-bpsdm/tindak-pidana-penghinaan-dalam-kuhp-baru", [r"Pasal 433", r"Pasal 434", r"Pengaduan"]),
    ("HUKUMONLINE UU ITE baru", "https://www.hukumonline.com/berita/a/perubahan-penting-soal-pencemaran-nama-baik-di-uu-ite-baru-lt65a90c5004886/", [r"Pasal 27A", r"Pasal 45", r"hak untuk dilupakan|right to be forgotten"]),
    ("SUKOHARJO memviralkan", "https://jdih.sukoharjokab.go.id/berita/detail/memviralkan-fakta-di-medsos-bisa-kena-pasal-pencemaran-nama-baik", [r"Pasal 27A", r"Pasal 45"]),
    ("MKRI unsur UU ITE", "https://mkri.id/berita/mk-mempertegas-pemaknaan-unsur-unsur-pencemaran-nama-baik-dalam-uu-ite--23133", [r"Pasal 27A", r"diketahui umum"]),
]

for nama, u, pats in urls:
    t = html(u)
    print(f"\n=== {nama} {u} -> {len(t)}")
    if len(t) < 500:
        print("   ", t[:200]); continue
    for p in pats:
        c(t, p)
