#!/usr/bin/env python3
"""Cek fakta artikel mediasi/arbitrase 25 Okt 2026: UU 30/1999, Perma 1/2016 & 3/2022, BANI, Basyarnas, PMN."""
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=5):
    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)


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


def cuplik(t, kws, lebar=320, n=2):
    hasil = 0
    for kw in kws:
        for m in list(re.finditer(kw, t, re.I))[:n]:
            print(f"   [{kw}] ...{t[max(0, m.start()-150):m.start()+lebar]}...")
            hasil += 1
    if not hasil:
        print("   (tidak ada cuplikan cocok)")


QS = [
    ("arbitrase final pasal 60 UU 30 1999",
     ["Pasal 60", "final dan mempunyai kekuatan hukum tetap", "tidak dapat diajukan"]),
    ("pasal 3 UU 30 tahun 1999 sengketa tidak dapat arbitrase",
     ["Pasal 3", "tidak dapat diselesaikan", "kuasa"]),
    ("Pasal 22 UU 30 1999 arbitrase klausul tidak jelas ketua pengadilan negeri",
     ["Pasal 22", "Ketua Pengadilan Negeri"]),
    ("Perma 1 tahun 2016 mediasi pasal 13 tenggat 30 hari perpanjangan 30 hari",
     ["Pasal 13", "30 (tiga puluh) hari", "perpanjangan"]),
    ("Perma 3 tahun 2022 mediasi pengadilan elektronik",
     ["mediasi secara elektronik", "Perma Nomor 3 Tahun 2022"]),
    ("UU 48 tahun 2009 pasal 58 arbitrase alternatif penyelesaian sengketa",
     ["Pasal 58", "arbitrase"]),
]
for q, kws in QS:
    print("\n===", q)
    try:
        d = cari(q)
    except Exception as e:
        print("  serper ERR", e)
        continue
    for it in d.get("organic", [])[:4]:
        u = it["link"]
        t = teks(u)
        if t.startswith(("HTTP", "ERR")):
            print("  ", u, "->", t[:40])
            continue
        print("  ", u, f"({len(t)} char)")
        cuplik(t, kws)

print("\n\n#### INSTITUSI")
for q in ["BANI Surabaya sekretariat alamat", "Badan Arbitrase Nasional Indonesia BANI alamat Jakarta",
          "Basyarnas Badan Arbitrase Syariah Nasional alamat sekretariat",
          "Pusat Mediasi Nasional PMN alamat Jakarta",
          "mediator bersertifikat Mahkamah Agung Pengadilan Negeri Surabaya",
          "Pengadilan Negeri Surabaya mediasi Perma 1 2016 mediator non hakim"]:
    print("\n===", q)
    try:
        d = cari(q)
    except Exception as e:
        print("  serper ERR", e)
        continue
    for it in d.get("organic", [])[:5]:
        print("  -", it["title"][:95], "|", it["link"])
        sn = it.get("snippet", "")
        print("     ", sn[:260])
