#!/usr/bin/env python3
"""Cari informasi tentang PT Sampoerna Jaya Baja dari beberapa mesin pencari."""
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"}
TANYA = ['"Sampoerna Jaya Baja"', 'PT Sampoerna Jaya Baja', 'Sampoerna Jaya Baja profil perusahaan',
         '"Sampoerna Jaya Baja" alamat', 'Sampoerna Jaya Baja baja ringan']


def ambil(u, data=None, jenis="GET"):
    r = urllib.request.Request(u, headers=UA, data=data)
    try:
        with urllib.request.urlopen(r, timeout=90) 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")[:400]
    except Exception as e:
        return 0, str(e)[:150]


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


print("=== DuckDuckGo ===")
for q in TANYA[:3]:
    st, isi = ambil("https://html.duckduckgo.com/html/?q=" + urllib.parse.quote(q))
    print(f"\n[{q}] status {st}")
    if st == 200:
        hasil = re.findall(r'<a rel="nofollow" class="result__a" href="([^"]+)"[^>]*>(.*?)</a>', isi, re.S)
        if not hasil:
            hasil = re.findall(r'class="result__a"[^>]*href="([^"]+)"[^>]*>(.*?)</a>', isi, re.S)
        snip = re.findall(r'class="result__snippet"[^>]*>(.*?)</a>', isi, re.S)
        for i, (u, j) in enumerate(hasil[:6]):
            print(f"   {i+1}. {bersih(j)[:80]}")
            print(f"      {urllib.parse.unquote(u)[:130]}")
            if i < len(snip):
                print(f"      {bersih(snip[i])[:200]}")
    else:
        print("   ", isi[:150])
    time.sleep(2)

print("\n\n=== Bing ===")
for q in TANYA[:2]:
    st, isi = ambil("https://www.bing.com/search?q=" + urllib.parse.quote(q) + "&setlang=id")
    print(f"\n[{q}] status {st}")
    if st == 200:
        for mm in re.findall(r'<li class="b_algo".*?</li>', isi, re.S)[:6]:
            judul = re.search(r"<h2[^>]*>(.*?)</h2>", mm, re.S)
            tautan = re.search(r'href="(http[^"]+)"', mm)
            teks = re.search(r'<p[^>]*>(.*?)</p>', mm, re.S)
            print(f"   - {bersih(judul.group(1))[:90] if judul else '-'}")
            print(f"     {tautan.group(1)[:120] if tautan else '-'}")
            if teks:
                print(f"     {bersih(teks.group(1))[:220]}")
    else:
        print("   ", isi[:150])
    time.sleep(2)
