#!/usr/bin/env python3
"""Perbaikan tag artikel #3657: 'legalitas usaha' sudah ada tapi tidak masuk daftar 100 teratas."""
import base64, json, urllib.request, urllib.error

DOM = "tslaw.id"
AUTH = base64.b64encode(b"bambangbot:EFKm EYGx VQCP Y9go ncPr uM2Y").decode()
UA = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/124 Safari/537.36"}


def rest(path, method="GET", data=None):
    h = {"Authorization": f"Basic {AUTH}", **UA}
    body = None
    if data is not None:
        body = json.dumps(data).encode()
        h["Content-Type"] = "application/json"
    r = urllib.request.Request(f"https://{DOM}{path}", data=body, headers=h, method=method)
    try:
        with urllib.request.urlopen(r, timeout=120) as x:
            return x.status, json.loads(x.read())
    except urllib.error.HTTPError as e:
        return e.code, e.read().decode()[:200]


st, t = rest("/wp-json/wp/v2/tags?slug=legalitas-usaha&_fields=id,name,slug,count")
print("cari tag legalitas usaha:", st, t)
if isinstance(t, list) and t:
    tid = t[0]["id"]
    st, p = rest("/wp-json/wp/v2/posts/3657?context=edit&_fields=id,tags,status", )
    sekarang = p.get("tags", [])
    baru = sorted(set(sekarang + [tid]))
    st, u = rest("/wp-json/wp/v2/posts/3657", "POST", {"tags": baru})
    print("set tag:", st, "->", u.get("tags") if isinstance(u, dict) else u)
    st, c = rest("/wp-json/wp/v2/posts/3657?context=edit&_fields=id,tags,status,slug,title")
    print("verifikasi:", json.dumps({k: c[k] for k in ["id", "status", "slug", "tags"]}, ensure_ascii=False))
    st, nama = rest("/wp-json/wp/v2/tags?include=" + ",".join(map(str, c["tags"])) + "&_fields=id,name,count")
    print("nama tag:", [(x["id"], x["name"], x["count"]) for x in nama])
