#!/usr/bin/env python3
"""Threads @ukyhandoko — konten berita SEO/AI/DM terupdate + minta pendapat (tanpa mention internal)."""
import sys, json, urllib.request
from datetime import datetime, timedelta, timezone

sys.path.insert(0, "/home/mantapman/.hermes/profiles/atun/workspace")
from repliz_client import HEADERS, BASE

WIB = timezone(timedelta(hours=7))
UKY_T = "6a334e89c5ff4ce3a3225a48"
SLOTS = [5, 8, 11, 14, 17, 20, 23]

# Berita SEO/AI/DM terupdate (verified 200, tanpa mention internal)
BERITA = [
    (
        "Google rilis laporan AI di Search Console secara global — sinyal kalau AI sekarang jadi bagian yang diukur Google",
        "https://www.searchenginejournal.com/google-search-console-ai-reports-rolled-out-worldwide/587836/",
        "31 Agu 2026",
        "Baru baca kabar ini: Google Search Console meluncurkan laporan AI ke seluruh dunia. Artinya Google mulai serius mengukur performa konten di AI search — bukan cuma klik organik biasa.\n\nBuat saya yang sehari-hari berkutat di SEO, ini perubahan besar: indikator kesuksesan konten mulai bergeser. Pertanyaannya, apakah strategi konten kita harus ikut berubah atau tetap sama?\n\nMenurut kamu, apakah laporan AI di Search Console bakal mengubah cara kita kerja SEO? Kasih pendapatmu di komentar! 👇",
    ),
    (
        "Studi baru: sinyal teknis yang dipakai AI search, tapi masih jarang dioptimasi para SEO",
        "https://www.searchenginejournal.com/the-technical-signals-ai-search-uses-that-most-seos-still-arent-optimizing/586381/",
        "1 Sep 2026",
        "Ada temuan menarik dari Search Engine Journal: AI search ternyata membaca sinyal teknis tertentu yang masih jarang dioptimasi kebanyakan SEO.\n\nPadahal sinyal ini bisa menentukan apakah konten kita muncul sebagai sumber jawaban AI — bukan cuma masuk daftar hasil pencarian biasa. Ini peluang besar buat yang sadar lebih dulu.\n\nKira-kira aspek teknis apa yang paling sering diabaikan dalam strategi SEO sekarang? Share pendapatmu di kolom komentar! 👇",
    ),
]

def get_pending():
    pend = []
    for p in range(1, 80):
        raw = urllib.request.Request(f"{BASE}/public/schedule?page={p}&limit=100", headers=HEADERS)
        with urllib.request.urlopen(raw, timeout=30) as r:
            docs = json.load(r)["docs"]
        for d in docs:
            if d.get("accountId") == UKY_T and (d.get("status") or "").lower() == "pending":
                pend.append(d)
    return pend

def next_free_slots(pend, now, count):
    day = now.replace(minute=0, second=0, microsecond=0)
    out = []
    for _ in range(21):
        taken = {(d.get("scheduleAt") or "")[:13] for d in pend}
        for h in SLOTS:
            cand = day.replace(hour=h)
            if cand <= now:
                continue
            utc_h = cand.astimezone(timezone.utc).strftime("%Y-%m-%dT%H")
            if utc_h not in taken:
                out.append(cand)
                pend.append({"scheduleAt": cand.astimezone(timezone.utc).strftime("%Y-%m-%dT%H:%M:%S.000Z")})
                if len(out) >= count:
                    return out
        day += timedelta(days=1)
    return out

pend = get_pending()
now = datetime.now(WIB)
slots = next_free_slots(pend, now, len(BERITA))

print(f"🕒 sekarang: {now.strftime('%d/%m %H:%M WIB')}")
ok = fail = 0
for i, (judul, url, tgl, caption) in enumerate(BERITA):
    if i >= len(slots):
        print(f"  ❌ {judul[:40]}: tidak ada slot")
        fail += 1
        continue
    slot = slots[i]
    at = slot.astimezone(timezone.utc).strftime("%Y-%m-%dT%H:%M:%S.000Z")
    full = f"{caption}\n\nSumber: {url}\n\n#AI #SEO #DigitalMarketing #Google"
    payload = {
        "accountId": UKY_T,
        "title": f"Uky — {judul[:45]}",
        "description": full,
        "topic": "AI & SEO",
        "type": "text",
        "medias": [],
        "scheduleAt": at,
        "replies": [
            {"text": "Menariknya, ini baru awal — sebentar lagi cara kita mengukur performa online bakal berubah total. 🤖", "username": ""},
        ],
    }
    req = urllib.request.Request(f"{BASE}/public/schedule",
                                 data=json.dumps(payload).encode(),
                                 headers={**HEADERS, "Content-Type": "application/json"})
    try:
        with urllib.request.urlopen(req, timeout=30) as r:
            res = json.load(r)
        ok += 1
        print(f"  ✅ {slot.strftime('%d/%m %H:00')} WIB | {judul[:55]}")
    except Exception as e:
        fail += 1
        print(f"  ❌ {judul[:40]}: {e}")
print(f"\n📊 Total: {ok} OK, {fail} gagal")
