#!/usr/bin/env python3
"""Pasang video Menu Nasi Ayam Goreng Kampung ke IG + TikTok + FB Pak Otto."""
import sys, json, urllib.request
from datetime import datetime, timedelta, timezone
sys.path.insert(0, "/home/mantapman/.openclaw/workspace-atun")
from repliz_client import HEADERS, BASE

WIB = timezone(timedelta(hours=7))
SLOTS = [5, 8, 11, 14, 17, 20, 23]
VIDEO_URL = "https://mantapserver.tail3947bb.ts.net/openclaw-img/soto_nasi_ayam_goreng_01.mp4"

CAP = """Menu yang bikin kangen masakan rumah: Nasi Ayam Goreng Kampung! 🍗🍚

Ayam kampung goreng yang gurih, sambal yang bikin nagih, plus nasi hangat — kombinasi sederhana yang bikin makan makin mantap. Digoreng fresh pas pesanan masuk, jadi tetap hangat dan kriuk.

Ga perlu ke Semarang, cukup ke Pagerwojo Sidoarjo! 😋

📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo
⏰ Buka Setiap Hari: 10.00 - 21.00 WIB
📲 081230777713

Kamu tim mana nih — soto, nasgor babat, atau nasi ayam goreng kampung? Cerita di komentar ya! 👇

#sotosemarangpakotto #nasiayamgoreng #ayamkampung #kulinersidoarjo #kulinermalam #warungsemarang #nasigoreng"""

ACC = {
    "6a86d6e962caae1e04ffedaa": "IG",
    "6a86d70362caae1e04ffedef": "TikTok",
    "6a8f9df162caae1e040754d8": "FB",
}

def get_pending(accid):
    out = []
    for p in range(1, 60):
        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") == accid and (d.get("status") or "").lower() == "pending":
                out.append(d)
    return out

now = datetime.now(WIB)
ok = fail = 0
for accid, nm in ACC.items():
    pend = get_pending(accid)
    taken = {(d.get("scheduleAt") or "")[:13] for d in pend}
    day = now.replace(minute=0, second=0, microsecond=0)
    slot = None
    for _ in range(7):
        for h in SLOTS:
            cand = day.replace(hour=h)
            if cand <= now:
                continue
            if cand.astimezone(timezone.utc).strftime("%Y-%m-%dT%H") not in taken:
                slot = cand
                break
        if slot:
            break
        day += timedelta(days=1)
    if slot is None:
        print(f"  ❌ {nm}: tidak ada slot")
        fail += 1
        continue
    at = slot.astimezone(timezone.utc).strftime("%Y-%m-%dT%H:%M:%S.000Z")
    payload = {
        "accountId": accid,
        "title": f"Soto Pak Otto — Nasi Ayam Goreng Kampung ({nm})",
        "description": CAP,
        "topic": "Menu Pak Otto",
        "type": "video",
        "medias": [{"url": VIDEO_URL, "type": "video", "alt": "soto_nasi_ayam_goreng_01.mp4"}],
        "scheduleAt": at,
        "replies": [],
    }
    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=60) as r:
            res = json.load(r)
        ok += 1
        print(f"  ✅ {nm:7s} | {slot.strftime('%d/%m %H:00 WIB')} | id={res.get('_id') or res.get('id') or '?'}")
    except Exception as e:
        fail += 1
        print(f"  ❌ {nm}: {e}")
print(f"\n📊 Total: {ok} OK, {fail} gagal")
