#!/usr/bin/env python3
"""Ambil judul + meta Yoast saat ini untuk kandidat perbaikan (item 4) + info halaman daftar."""
import base64, json, sys, time, urllib.error, urllib.request

WS = "/home/mantapman/.hermes/profiles/atun/workspace"
AUTH = base64.b64encode(b"bambangbot:q26r RePo BVy6 pwU2 F3z7 ouyl").decode()
UA = {"User-Agent": "Mozilla/5.0"}
S = "https://studiosoft.id"


def rest(path):
    h = {"Authorization": f"Basic {AUTH}", **UA}
    r = urllib.request.Request(S + path, headers=h)
    for _ in range(3):
        try:
            with urllib.request.urlopen(r, timeout=120) as x:
                return json.loads(x.read())
        except urllib.error.HTTPError as e:
            return {"err": e.code, "msg": e.read().decode()[:200]}
        except Exception:
            time.sleep(4)
    return None


renc = json.load(open(f"{WS}/drafts/ss_fase1_rencana.json"))
ids = [x["id"] for x in renc["nol_klik"]]

# halaman daftar agensi (kanonik)
d = rest("/wp-json/wp/v2/posts?slug=digital-agency-terbaik-di-surabaya&context=edit"
         "&_fields=id,link,title,date,meta,content")
if isinstance(d, list) and d:
    p = d[0]
    raw = p.get("content", {}).get("raw", "")
    print(f"=== halaman daftar kanonik: #{p['id']} {p['link']} | {p['date'][:10]} | "
          f"{len(raw.split())} kata | yoast: {json.dumps({k: v for k, v in (p.get('meta') or {}).items() if 'yoast' in k}, ensure_ascii=False)[:300]}")

print("\n=== meta Yoast 10 kandidat (nol klik) ===")
for i, x in enumerate(renc["nol_klik"], 1):
    p = rest(f"/wp-json/wp/v2/posts/{x['id']}?context=edit&_fields=id,title,link,date,meta,excerpt")
    if not isinstance(p, dict) or "meta" not in p:
        print(f"  #{x['id']} ❌ {str(p)[:80]}")
        continue
    m = p.get("meta") or {}
    print(f"\n  {i:>2}. #{x['id']} · {x['tayang']} tayang · pos {x['posisi']} · {p['date'][:10]}")
    print(f"      judul WP   : {p['title']['raw'][:100]}")
    print(f"      yoast judul: {str(m.get('_yoast_wpseo_title'))[:100]}")
    print(f"      yoast desc : {str(m.get('_yoast_wpseo_metadesc'))[:160]}")
    print(f"      fokus kata : {m.get('_yoast_wpseo_focuskw')}")
    print(f"      kueri      : " + " | ".join(f"{q[3]} ({q[0]})" for q in x["kueri"][:3]))
