#!/usr/bin/env python3
"""Verifikasi artikel klaster agensi StudioSoft: HTTP, tombol WA, tautan internal, judul & meta live."""
import base64, html, json, re, time, urllib.error, urllib.request

S = "https://studiosoft.id"
AUTH = base64.b64encode(b"bambangbot:q26r RePo BVy6 pwU2 F3z7 ouyl").decode()
UA = {"User-Agent": "Mozilla/5.0"}
DAFTAR = "digital-agency-terbaik-di-surabaya"

ART = [
    (9260, "cara-memilih-digital-agency-surabaya", "Cara Memilih Digital Agency Surabaya: 7 Pertanyaan"),
    (9288, "biaya-digital-agency-surabaya", "Biaya Digital Agency Surabaya: Rincian Biayanya"),
    (9290, "digital-agency-vs-freelancer-vs-in-house", "Digital Agency vs Freelancer vs In-house"),
    (9292, "tanda-digital-agency-bekerja-dengan-benar", "6 Tanda Digital Agency Bekerja dengan Benar"),
]

print("=== 1. data tersimpan (WP REST) ===")
for pid, slug, _ in ART:
    h = {"Authorization": f"Basic {AUTH}", **UA}
    r = urllib.request.Request(f"{S}/wp-json/wp/v2/posts/{pid}?context=edit"
                               f"&_fields=id,slug,link,status,title,content,meta", headers=h)
    with urllib.request.urlopen(r, timeout=120) as x:
        d = json.loads(x.read())
    raw = d["content"]["raw"]
    m = d.get("meta") or {}
    kata = len(re.sub(r"<[^>]+>", " ", raw).split())
    print(f"  #{pid} {d['status']} | {kata} kata | WA {'ada' if 'wa.me' in raw else 'TIDAK'} | "
          f"tautan daftar {raw.count(DAFTAR)}× | em dash {raw.count('—')} | "
          f"yoast judul {'ada' if m.get('_yoast_wpseo_title') else 'KOSONG'}, "
          f"desc {'ada' if m.get('_yoast_wpseo_metadesc') else 'KOSONG'}")

print("\n=== 2. halaman live ===")
for pid, slug, judul_yoast in ART:
    try:
        r = urllib.request.Request(f"{S}/{slug}/?nocache={int(time.time())}", headers=UA)
        with urllib.request.urlopen(r, timeout=120) as x:
            kode = x.status
            t = html.unescape(x.read().decode("utf-8", "replace"))
    except urllib.error.HTTPError as e:
        print(f"  #{pid} ❌ HTTP {e.code}"); continue
    jl = re.search(r"<title>(.*?)</title>", t, re.S)
    dl = re.search(r'<meta name="description" content="([^"]*)"', t)
    jl = html.unescape(jl.group(1).strip()) if jl else "(tidak ada)"
    dl = html.unescape(dl.group(1).strip()) if dl else "(tidak ada)"
    wa = "wa.me/6281935000624" in t
    link = f'href="{S}/{DAFTAR}/"' in t
    print(f"  #{pid} HTTP {kode} | WA {'✅' if wa else '❌'} | tautan daftar {'✅' if link else '❌'}")
    print(f"        judul: {jl[:78]}")
    print(f"        {'✅ judul cocok' if jl.strip() == judul_yoast else '⚠ judul beda dari rencana: ' + judul_yoast}")
    print(f"        desc : {dl[:100]}  ({'✅' if len(dl) > 100 else '⚠ pendek'})")
