#!/usr/bin/env python3
"""Ekstrak teks UU 20/2016 (merek) dari PDF teks + cuplik pasal kunci; cek hak cipta dari wikisource."""
import re, zlib, urllib.request, urllib.error

OUT = "/home/mantapman/.hermes/profiles/atun/workspace/tslaw_pemulihan/perbaikan_20261020"
UA = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/124 Safari/537.36"}


def pdf_teks(b):
    out = []
    for m in re.finditer(rb"stream\r?\n(.*?)endstream", b, re.S):
        try:
            d = zlib.decompress(m.group(1))
        except Exception:
            continue
        if b"Tj" not in d and b"TJ" not in d:
            continue
        pot = []
        for t in re.finditer(rb"\((?:[^()\\]|\\.)*\)|TJ|Tj|T\*|Td|TD", d):
            g = t.group(0)
            if g.startswith(b"("):
                s = g[1:-1].decode("latin-1")
                s = re.sub(r"\\([0-7]{1,3})", lambda mm: chr(int(mm.group(1), 8)), s)
                s = s.replace(r"\(", "(").replace(r"\)", ")").replace(r"\\", "\\")
                pot.append(s)
            elif g in (b"Td", b"TD", b"T*"):
                pot.append("\n")
        out.append("".join(pot))
    return "\n".join(out)


u = "https://learning.hukumonline.com/wp-content/uploads/2021/03/Undang-Undang-Nomor-20-Tahun-2016-tentang-Merek-dan-Indikasi-Geografis.pdf"
b = urllib.request.urlopen(urllib.request.Request(u, headers=UA), timeout=180).read()
print("pdf bytes", len(b))
t = pdf_teks(b)
open(f"{OUT}/uu20_2016_merek.txt", "w").write(t)
t2 = re.sub(r"\s+", " ", t)
print("teks", len(t2))

for pat, lebar in [(r"Pasal 3 ", 300), (r"Pasal 4 ", 420), (r"Pasal 21 ", 500), (r"Pasal 24 ", 500),
                   (r"Pasal 25 ", 420), (r"Pasal 26 ", 400), (r"Pasal 27 ", 400), (r"Pasal 28 ", 500),
                   (r"Pasal 35 ", 700), (r"Pasal 100 ", 900), (r"Pasal 102 ", 700), (r"Pasal 103 ", 300),
                   (r"Pasal 46 ", 400), (r"Pasal 53 ", 300)]:
    m = re.search(pat, t2)
    print(f"\n[{pat.strip()}] {(t2[m.start():m.start()+lebar] if m else 'TIDAK KETEMU')}")

print("\n\n######## HAK CIPTA (wikisource)")
hc = re.sub(r"\s+", " ", open(f"{OUT}/hc_ws.txt").read())
for pat, lebar in [(r"Pasal 58 ", 700), (r"Pasal 59 ", 600), (r"Pasal 66 ", 500), (r"Pasal 40 ", 300),
                   (r"Pasal 113 ", 500), (r"Pasal 16 ayat", 300)]:
    m = re.search(pat, hc)
    print(f"\n[{pat.strip()}] {(hc[m.start():m.start()+lebar] if m else 'TIDAK KETEMU')}")
