#!/usr/bin/env python3
"""Cari jejak resmi PT Sampoerna Jaya Baja: Tokopedia, OpenCorporates, AHU, DuckDuckGo, peta."""
import html, json, re, time, urllib.parse, urllib.request, urllib.error

UA = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36",
      "Accept-Language": "id-ID,id;q=0.9", "Accept": "text/html,application/xhtml+xml"}


def ambil(u, timeout=70, data=None, header_tambahan=None):
    h = dict(UA)
    if header_tambahan:
        h.update(header_tambahan)
    try:
        with urllib.request.urlopen(urllib.request.Request(u, headers=h, data=data), timeout=timeout) as x:
            return x.status, x.read().decode("utf-8", "replace")
    except urllib.error.HTTPError as e:
        return e.code, e.read().decode("utf-8", "replace")[:250]
    except Exception as e:
        return 0, str(e)[:110]


def bersih(t):
    return html.unescape(re.sub(r"<[^>]+>", " ", t)).strip()


print("=== 1. Tokopedia ===")
st, isi = ambil("https://www.tokopedia.com/search?st=shop&q=" + urllib.parse.quote("Sampoerna Jaya Baja"))
print(f"   status {st} | sebutan: {len(re.findall('sampoerna jaya baja', isi, re.I))}")
for p in re.findall(r".{0,100}Sampoerna Jaya Baja.{0,140}", isi, re.I | re.S)[:4]:
    print("      »", bersih(p)[:230])

print("\n=== 2. OpenCorporates ===")
st, isi = ambil("https://opencorporates.com/companies/id?q=" + urllib.parse.quote("Sampoerna Jaya Baja"))
print(f"   status {st} | sebutan: {len(re.findall('sampoerna', isi, re.I))}")
for p in re.findall(r".{0,120}Sampoerna.{0,160}", isi, re.I | re.S)[:4]:
    print("      »", bersih(p)[:240])

print("\n=== 3. Ditjen AHU (daftar resmi PT) ===")
for u in ("https://ahu.go.id/pencarian/profil-badan?q=" + urllib.parse.quote("Sampoerna Jaya Baja"),
          "https://ahu.go.id/",):
    st, isi = ambil(u, timeout=60)
    print(f"   {u[:70]} → status {st} | panjang {len(isi)} | sebutan: {len(re.findall('sampoerna', isi, re.I))}")
    if st == 200 and len(isi) > 500:
        for p in re.findall(r".{0,90}Sampoerna.{0,140}", isi, re.I | re.S)[:3]:
            print("      »", bersih(p)[:220])

print("\n=== 4. DuckDuckGo (ulang, versi lite) ===")
for q in ('"Sampoerna Jaya Baja"', 'Sampoerna Jaya Baja Bekasi baja'):
    st, isi = ambil("https://lite.duckduckgo.com/lite/?q=" + urllib.parse.quote(q), timeout=90)
    print(f"\n   [{q}] status {st} | panjang {len(isi)}")
    if st == 200:
        for mm in re.findall(r'<a[^>]+class="result-link"[^>]*href="([^"]+)"[^>]*>(.*?)</a>', isi, re.S)[:6]:
            print(f"      {bersih(mm[1])[:80]} → {urllib.parse.unquote(mm[0])[:110]}")
        if not re.findall(r"result-link", isi):
            print("      (tidak ada hasil terbaca)")
    time.sleep(2)

print("\n=== 5. Peta (Google Maps & OpenStreetMap) ===")
st, isi = ambil("https://nominatim.openstreetmap.org/search?q=" + urllib.parse.quote("Sampoerna Jaya Baja") + "&format=json&countrycodes=id",
                header_tambahan={"User-Agent": "riset-perusahaan/1.0"})
print(f"   Nominatim status {st}: {isi[:300]}")
