#!/usr/bin/env python3
"""Cek fakta #3313 tahap 6 - Perma 1/2016 dari situs MA + konfirmasi lewat hukumonline."""
import re, zlib, 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 get(u, n=5000000):
    try:
        r = urllib.request.Request(u, headers=UA)
        with urllib.request.urlopen(r, timeout=90) as x:
            return x.status, x.read(n)
    except urllib.error.HTTPError as e:
        return e.code, b""
    except Exception as e:
        return type(e).__name__, b""


def teks(b):
    t = b.decode("utf-8", "replace")
    t = re.sub(r"<(script|style)[^>]*>.*?</\1>", " ", t, flags=re.S | re.I)
    t = re.sub(r"</(p|div|li|h[1-6])>", "\n", t, flags=re.I)
    t = re.sub(r"<[^>]+>", " ", t)
    t = re.sub(r"&nbsp;?", " ", t)
    return re.sub(r"[ \t]+", " ", t)


def pdf_text(b):
    hasil = []
    for c in re.findall(rb"stream\r?\n(.*?)endstream", b, re.S):
        try:
            d = zlib.decompress(c)
        except Exception:
            continue
        for m in re.finditer(rb"\(([^()\\]{2,})\)", d):
            hasil.append(m.group(1).decode("latin-1", "replace"))
    return re.sub(r"\s+", " ", " ".join(hasil))


st, b = get("https://www.mahkamahagung.go.id/media/8757")
print(f"=== MA media/8757 -> HTTP {st} {len(b)}B head={b[:8]}")
if b[:4] == b"%PDF":
    tp = pdf_text(b)
    print(f"    teks {len(tp)} | sampel: {tp[:200]}")
    for n in ("4", "6", "7", "17", "18", "24", "29"):
        m = re.search(rf"Pasal {n}\b", tp)
        print(f"  [Pasal {n}]", (tp[m.start():m.start() + 420] if m else "tidak ketemu"))
else:
    t = teks(b)
    print(f"    teks {len(t)} | {t[:200]}")

for u in ("https://www.hukumonline.com/berita/a/ini-poin-penting-yang-diatur-dalam-perma-no1-tahun-2016-lt56bb2d4541fd5/",
          "https://ms-langsa.go.id/wp/prosedur-mediasi/"):
    st, b = get(u)
    print(f"\n=== {u} -> HTTP {st} {len(b)}B")
    if st == 200 and b:
        t = re.sub(r"\s+", " ", teks(b))
        for pat in (r"wajib", r"[Mm]ediasi", r"Pasal 4"):
            ms = list(re.finditer(pat, t))
            print(f"  [{pat}] {len(ms)} temuan")
            if ms:
                m = ms[0]
                print("   >", t[max(0, m.start() - 200):m.start() + 380])
