#!/usr/bin/env python3
"""Cek fakta lanjutan 19 Okt: PP 28/2025 (definisi NIB, TDP) + NPWP 16 digit (DJP) + halal UU 33/2014."""
import json, re, urllib.request, urllib.error, zlib

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):
    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=6000000):
    try:
        with urllib.request.urlopen(urllib.request.Request(u, headers=UA), timeout=120) as x:
            b = x.read(batas)
    except urllib.error.HTTPError as e:
        return f"HTTP {e.code}", b""
    except Exception as e:
        return f"ERR {str(e)[:70]}", b""
    return b.decode("utf-8", "replace"), b


def pdf_streams(b):
    out = []
    for m in re.finditer(rb"stream\r?\n(.*?)endstream", b, re.S):
        try:
            out.append(zlib.decompress(m.group(1)).decode("latin-1"))
        except Exception:
            pass
    t = " ".join(out)
    # ambil teks di dalam operator Tj/TJ
    t = " ".join(re.findall(r"\((?:\\.|[^()\\])*\)", t))
    t = re.sub(r"[()]", "", t).replace("\\(", "(").replace("\\)", ")")
    return re.sub(r"\s+", " ", t)


print("=== cari PDF PP 28/2025")
for o in cari("PP 28 tahun 2025 pdf perizinan berusaha berbasis risiko jdih download").get("organic", [])[:6]:
    print("  -", o.get("link"))

for u in ["https://jdih.bkpm.go.id/document/peraturan-pemerintah-nomor-28-tahun-2025-tentang-penyelenggaraan-perizinan-berusaha-berbasis-risiko"]:
    t, b = teks(u)
    print(f"\n{u} -> len {len(t)}")
    print(t[:300])
    for m in re.finditer(r"https?://[^\"' ]+\.pdf", t):
        print("  pdf:", m.group(0)[:180])

print("\n=== NPWP 16 digit")
for o in cari("NPWP 16 digit badan usaha DJP pajak.go.id format NITKU 2025").get("organic", [])[:6]:
    print("  -", o.get("link"))
    print("    ", (o.get("snippet") or "")[:240])

print("\n=== halal UU 33/2014 Pasal 4")
for o in cari("\"UU 33/2014\" Pasal 4 \"wajib memiliki sertifikat halal\" produk").get("organic", [])[:5]:
    print("  -", o.get("link"))
    print("    ", (o.get("snippet") or "")[:240])
