#!/usr/bin/env python3
"""Verifikasi live halaman #3770 + cari artikel sumber untuk link masuk (langkah 2)."""
import base64, html, json, re, time, urllib.request

S = "https://studiosoft.id"
AUTH = base64.b64encode(b"bambangbot:q26r RePo BVy6 pwU2 F3z7 ouyl").decode()
TARGET = "https://studiosoft.id/jasa-pembuatan-website-profesional-untuk-usaha-jasa-di-surabaya/"


def wp(path):
    req = urllib.request.Request(S + path, headers={"Authorization": f"Basic {AUTH}", "User-Agent": "Mozilla/5.0"})
    with urllib.request.urlopen(req, timeout=200) as x:
        return json.loads(x.read())


print("=== VERIFIKASI LIVE #3770 ===")
r = urllib.request.Request(TARGET + "?nc=" + str(int(time.time())), headers={"User-Agent": "Mozilla/5.0", "Cache-Control": "no-cache"})
h = urllib.request.urlopen(r, timeout=90).read().decode("utf-8", "replace")
blocks = re.findall(r'<script[^>]*application/ld\+json[^>]*>(.*?)</script>', h, re.S)
faq = [b for b in blocks if '"FAQPage"' in b]
qn = 0
if faq:
    try:
        qn = len(json.loads(faq[0]).get("mainEntity", []))
    except Exception:
        pass
mm = re.search(r'<meta name=description content=.([^"]*).', h)
print(f"  meta description : {len(mm.group(1)) if mm else 0} char")
print(f"  judul            : {re.search(r'<title>(.*?)</title>', h, re.S).group(1)[:80]}")
print(f"  blok FAQPage     : {len(faq)} | jumlah Q di schema: {qn}")
print(f"  'Paket dan Kisaran Harga' tampil: {'Paket dan Kisaran Harga' in h}")
print(f"  FAQ dobel terhapus: {'Pertanyaan yang Sering Diajukan' not in h}")
print(f"  tautan portofolio : {'/portfolio/' in h}")
print(f"  tautan paket      : {'8-paket-jasa-pembuatan-website' in h}")

print("\n=== KANDIDAT ARTIKEL SUMBER untuk link masuk ke #3770 ===")
posts, page = [], 1
while True:
    d = wp(f"/wp-json/wp/v2/posts?per_page=100&page={page}&context=edit&_fields=id,slug,title,content")
    posts += d
    if len(d) < 100:
        break
    page += 1
KATA = ("website", "web", "landing", "domain", "hosting", "wordpress", "seo", "digital marketing",
        "klinik", "bengkel", "umkm", "bisnis", "leads", "konversi", "google maps")
kandidat = []
for p in posts:
    jud = html.unescape(p["title"]["rendered"]).lower()
    if any(k in jud for k in KATA):
        raw = p["content"]["raw"]
        if TARGET in raw:
            continue
        kandidat.append({"id": p["id"], "slug": p["slug"], "judul": html.unescape(p["title"]["rendered"]),
                         "kata": len(html.unescape(re.sub(r"<[^>]+>", " ", raw)).split())})
print(f"  artikel relevan yang belum menautkan: {len(kandidat)}")
for k in kandidat[:25]:
    print(f"   #{k['id']:>5} {k['kata']:>5} kata | {k['judul'][:70]}")

json.dump(kandidat, open("/home/mantapman/.hermes/profiles/atun/workspace/ss_kandidat_link_3770.json", "w"), indent=1, ensure_ascii=False)
