#!/usr/bin/env python3
"""Cek fakta HKI untuk #3175 (20 Okt): merek, hak cipta, paten, desain industri, alur DJKI."""
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=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=4000000):
    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}"
    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)
    return re.sub(r"\s+", " ", t).replace("&nbsp;", " ").strip()


def cuplik(t, kws, lebar=300, n=2):
    for kw in kws:
        for m in list(re.finditer(kw, t, re.I))[:n]:
            print(f"   [{kw}] ...{t[max(0, m.start()-160):m.start()+lebar]}...")


QS = ["UU 20 tahun 2016 merek pasal 35 jangka waktu 10 tahun dapat diperpanjang",
      "UU 28 tahun 2014 hak cipta pasal 58 seumur hidup pencipta ditambah 70 tahun pasal 59 program komputer 50 tahun",
      "UU 31 tahun 2000 desain industri pasal 5 jangka waktu 10 tahun",
      "UU 13 tahun 2016 paten pasal 21 jangka waktu 20 tahun paten sederhana 10 tahun UU 65 tahun 2024",
      "pendaftaran merek DJKI tahapan pemeriksaan formalitas pengumuman dua bulan pemeriksaan substantif"]
for q in QS:
    print(f"\n=== {q}")
    try:
        for o in cari(q).get("organic", [])[:5]:
            print("  -", o.get("link"))
            print("    ", (o.get("snippet") or "")[:220])
    except Exception as e:
        print("  ERR", e)
