#!/usr/bin/env python3
"""TSLaw 16 Okt: cek fakta untuk artikel kecelakaan lalu lintas Surabaya.
Verifikasi: pasal UU 22/2009, UU 34/1964 + PP 44/1993 (Jasa Raharja),
Unit Laka Lantas Satlantas Polrestabes Surabaya, dan lembaga di Surabaya."""
import json, 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"}
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]


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:
        d = json.load(r)
    return [(o.get("link"), (o.get("snippet") or "")[:260]) for o in d.get("organic", [])[:n]]


def get(u, n=400000):
    try:
        with urllib.request.urlopen(urllib.request.Request(u, headers=UA), timeout=70) as x:
            return x.status, x.read(n).decode("utf-8", "replace")
    except urllib.error.HTTPError as e:
        return e.code, ""
    except Exception as e:
        return type(e).__name__, ""


def teks(html):
    t = re.sub(r"<(script|style)[^>]*>.*?</\1>", " ", html, flags=re.S | re.I)
    t = re.sub(r"<[^>]+>", " ", t)
    t = re.sub(r"&nbsp;?", " ", t)
    return re.sub(r"\s+", " ", t).strip()


Q = [
    '"Pasal 234" UU 22 Tahun 2009 pengemudi bertanggung jawab kerugian kecelakaan',
    '"Pasal 235" UU 22 Tahun 2009 pertolongan korban kecelakaan lalu lintas',
    '"Pasal 240" UU 22 Tahun 2009 asuransi kendaraan bermotor wajib',
    '"Pasal 310" UU 22 Tahun 2009 kelalaian mengakibatkan kecelakaan pidana',
    '"Pasal 312" UU 22 Tahun 2009 pengemudi melarikan diri kecelakaan',
    'Jasa Raharja santunan kecelakaan lalu lintas UU 34 Tahun 1964 PP 44 Tahun 1993',
    'Unit Laka Lantas Satlantas Polrestabes Surabaya laporan kecelakaan',
    'Jasa Raharja kantor cabang Surabaya alamat',
    'surat keterangan laporan polisi kecelakaan lalu lintas syarat santunan Jasa Raharja',
    'LBH Surabaya alamat Jalan Kidal bantuan hukum',
    'LBH Legundi Surabaya Jalan Legundi Posbakum Pengadilan Negeri Surabaya',
    'Posbakum Pengadilan Negeri Surabaya Jalan Arjuno bantuan hukum gratis',
]

for q in Q:
    print(f"\n### {q}")
    try:
        for link, sn in cari(q):
            print(f"  - {link}\n      {sn}")
    except Exception as e:
        print(f"  GAGAL: {type(e).__name__} {e}")
