#!/usr/bin/env python3
"""Cari PT Sampoerna Jaya Baja lewat banyak jalur: mesin pencari alternatif, direktori perusahaan, domain."""
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,en;q=0.8"}
Q = "Sampoerna Jaya Baja"


def ambil(u, timeout=60):
    try:
        with urllib.request.urlopen(urllib.request.Request(u, headers=UA), 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")[:300]
    except Exception as e:
        return 0, str(e)[:120]


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


print("=== mesin pencari alternatif ===")
mesin = {
    "Mojeek": "https://www.mojeek.com/search?q=",
    "Marginalia": "https://search.marginalia.nu/search?query=",
    "Searx (priv.au)": "https://priv.au/search?q=",
    "Ecosia": "https://www.ecosia.org/search?q=",
}
for nama, dasar in mesin.items():
    st, isi = ambil(dasar + urllib.parse.quote(f'"{Q}"'))
    tanda = len(re.findall(Q.lower(), isi.lower()))
    print(f"   {nama:<18} status {st} | sebutan nama: {tanda}")
    if st == 200 and tanda:
        for m in re.findall(r'<a[^>]+href="(https?://[^"]+)"[^>]*>(.{0,90}?)</a>', isi)[:5]:
            if "mojeek" in m[0] or "ecosia" in m[0]:
                continue
            print(f"      {bersih(m[1])[:70]} → {m[0][:100]}")
    time.sleep(1)

print("\n=== coba domain yang mungkin ===")
kandidat = ["sampoernajayabaja.com", "sampoernajayabaja.co.id", "sjbaja.co.id", "sampoernajaya.com",
            "sampoernajayabaja.id", "pt-sampoernajayabaja.com"]
for d in kandidat:
    for skema in ("https://", "http://"):
        st, isi = ambil(skema + d, timeout=25)
        if st:
            judul = re.search(r"<title[^>]*>(.*?)</title>", isi, re.S)
            print(f"   {skema}{d} → {st} | {bersih(judul.group(1))[:80] if judul else '-'}")
            break
    else:
        print(f"   {d} → tidak ada")

print("\n=== direktori perusahaan (pencarian internal) ===")
direktori = [
    "https://perusahaan.co.id/?s=" + urllib.parse.quote(Q),
    "https://www.google.com/search?q=" + urllib.parse.quote(f'"{Q}"') + "&num=20",
    "https://r.jina.ai/https://www.google.com/search?q=" + urllib.parse.quote(f'"{Q}"'),
    "https://search.brave.com/search?q=" + urllib.parse.quote(f'"{Q}"'),
]
for u in direktori:
    st, isi = ambil(u)
    nama = u.split("/")[2] if "//" in u else u[:30]
    jumpa = len(re.findall(Q.lower(), isi.lower()))
    print(f"   {nama:<28} status {st} | sebutan nama: {jumpa} | panjang {len(isi)}")
    if st == 200 and jumpa:
        for baris in re.split(r"\n", bersih(isi))[:400]:
            if Q.lower() in baris.lower() and len(baris) > 40:
                print(f"      » {baris[:240]}")
    time.sleep(2)
