#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""Lihat struktur meta (SEO plugin) satu post studiosoft.id + daftar kategori.
Read-only."""
import base64, json, urllib.request, urllib.error

S = "https://studiosoft.id"
AUTH = base64.b64encode(b"bambangbot:q26r RePo BVy6 pwU2 F3z7 ouyl").decode()
H = {"Authorization": f"Basic {AUTH}", "User-Agent": "Mozilla/5.0"}


def api(path):
    r = urllib.request.Request(S + path, headers=H)
    try:
        with urllib.request.urlopen(r, timeout=90) as x:
            return x.status, json.loads(x.read())
    except urllib.error.HTTPError as e:
        return e.code, e.read().decode()[:300]


st, d = api("/wp-json/wp/v2/posts?per_page=1&context=edit&_fields=id,slug,title,meta,excerpt,categories,tags")
print("http", st)
if isinstance(d, list) and d:
    p = d[0]
    print("id", p["id"], "slug", p["slug"])
    print("meta keys:", list((p.get("meta") or {}).keys()))
    print("meta:", json.dumps(p.get("meta"), ensure_ascii=False)[:800])
    print("excerpt:", json.dumps(p.get("excerpt"), ensure_ascii=False)[:300])
    print("categories:", p.get("categories"), "tags:", p.get("tags"))

st, d = api("/wp-json/wp/v2/categories?per_page=100&_fields=id,name,slug,count")
if isinstance(d, list):
    print("\n=== kategori ===")
    for c in sorted(d, key=lambda x: -x["count"])[:25]:
        print(f"  {c['id']:6d} {c['count']:4d}  {c['name']}  ({c['slug']})")
