#!/usr/bin/env python3
"""Jadwalkan draf #9997 ke hari kosong pertama (2026-11-02, 08:00 waktu situs)."""
import base64, json, re, sys, time, urllib.error, urllib.request

DOM = "studiosoft.id"
AUTH = base64.b64encode(b"bambangbot:q26r RePo BVy6 pwU2 F3z7 ouyl").decode()
UA = {"User-Agent": "Mozilla/5.0"}
PID = 9997
TANGGAL = "2026-11-02T08:00:00"


def rest(p, 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"
    for i in range(3):
        try:
            r = urllib.request.Request(f"https://{DOM}{p}", data=body, headers=h, method=method)
            with urllib.request.urlopen(r, timeout=180) as x:
                return x.status, json.loads(x.read())
        except urllib.error.HTTPError as e:
            return e.code, e.read().decode()[:300]
        except Exception:
            time.sleep(4 + i * 3)
    return 0, "gagal koneksi"


st, info = rest("/wp-json/?_fields=timezone_string,name")
print(f"zona situs: {info.get('timezone_string')} · situs: {info.get('name')} (HTTP {st})")

# pastikan hari itu masih kosong
st, isi = rest(f"/wp-json/wp/v2/posts?status=future&per_page=100&orderby=date&order=asc&_fields=id,date,title")
hari = {}
for p in (isi if isinstance(isi, list) else []):
    hari.setdefault(p["date"][:10], []).append(p["id"])
print("jadwal future sebelum:", {k: v for k, v in sorted(hari.items())})
if "2026-11-02" in hari:
    print("❌ 2026-11-02 sudah terisi, hentikan")
    sys.exit(1)

st, d = rest(f"/wp-json/wp/v2/posts/{PID}", "POST", {"status": "future", "date": TANGGAL})
if not isinstance(d, dict) or "id" not in d:
    print("❌ gagal menjadwalkan:", st, str(d)[:300])
    sys.exit(1)
print(f"POST jadwal: HTTP {st} → status={d.get('status')} date={d.get('date')} date_gmt={d.get('date_gmt')}")

time.sleep(2)
st, back = rest(f"/wp-json/wp/v2/posts/{PID}?context=edit&_fields=id,slug,status,date,date_gmt,title,content,featured_media,meta,categories")
raw = back["content"]["raw"]
m = back.get("meta") or {}
kata = len(re.sub(r"<[^>]+>", " ", raw).split())
print(f"baca balik: status={back['status']} · slug={back['slug']} · tanggal={back['date']} · "
      f"date_gmt={back['date_gmt']} · media={back['featured_media']} · kata={kata}")
print(f"judul: {back['title']['raw']}")
print(f"meta: {json.dumps({k: v for k, v in m.items() if 'yoast' in k}, ensure_ascii=False)[:300]}")
print(f"FAQPage: {'FAQPage' in raw} · wa.me: {'wa.me/6281935000624' in raw} · "
      f"tautan internal: {len(re.findall('studiosoft.id/', raw))}")
