#!/usr/bin/env python3
"""
Threads StudioSoft — promosi IG + share konten carousel IG terpilih (SEO+AI) + minta follow.
Pilih carousel yang kontennya menarik (SEO terbaru & AI). Caption: kenalan IG, minta pendapat, ajak follow.
"""
import sys, json, urllib.request, os
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))
SS_T = "6a335b9ec5ff4ce3a3225c2a"
SLOTS = [5, 8, 11, 14, 17, 20, 23]
IMG = "https://mantapserver.tail3947bb.ts.net/openclaw-img/"
STATE = "/home/mantapman/.hermes/profiles/atun/workspace/ss_threads_promo_ig_state.json"

# ── Carousel terpilih (konten menarik: SEO terbaru & AI) — 4 slide per album ──
PILIHAN = [
    (1,  "SEO tidak mati, ia bertransformasi", "Google sekarang 'berpikir' — AI Overview merangkum jawaban langsung. Ini tanda SEO berevolusi, bukan berakhir."),
    (2,  "10 tools AI terbaik 2026", "AI bukan tren — ini senjata kerja lebih cepat. Tools yang sama bisa beda hasil tergantung cara pakainya."),
    (3,  "Google kini 'berpikir'", "RankBrain & MUM paham konteks. Konten dangkal tenggelam, brand kredibel naik."),
    (4,  "Muncul di AI Overview", "Konten jadi referensi yang dikutip langsung jawaban AI — level berikutnya SEO."),
    (12, "Optimasi konten untuk AI Overview", "Definisi tegas + data + format tanya-jawab = konten yang dipilih AI sebagai sumber."),
    (28, "GEO: evolusi SEO untuk era AI", "Generative Engine Optimization — optimasi agar kontenmu dipilih mesin AI."),
]

def load_state():
    try:
        with open(STATE) as f:
            return json.load(f)
    except Exception:
        return {"posted": []}

def main():
    st = load_state()
    used = set(st.get("posted", []))

    # pending utk slot
    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") == SS_T and (d.get("status") or "").lower() == "pending":
                pend.append(d)
    taken = {(d.get("scheduleAt") or "")[:13] for d in pend}

    now = datetime.now(WIB)
    day = now.replace(minute=0, second=0, microsecond=0)
    ok = fail = 0
    for num, judul, isi in PILIHAN:
        if num in used:
            continue
        # cari file 4 slide
        slides = sorted([f for f in os.listdir("/home/mantapman/.hermes/profiles/atun/workspace/openclaw-img") if f.startswith(f"SSIGSEP_{num:02d}_")])
        if len(slides) < 4:
            print(f"  ⏭️  SSIGSEP_{num:02d}: slide kurang ({len(slides)})")
            continue
        # cari slot kosong
        slot = None
        for _ in range(14):
            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:
                    slot = cand
                    break
            if slot:
                break
            day += timedelta(days=1)
        if slot is None:
            break
        taken.add(slot.astimezone(timezone.utc).strftime("%Y-%m-%dT%H"))
        at = slot.astimezone(timezone.utc).strftime("%Y-%m-%dT%H:%M:%S.000Z")

        cap = (
            f"✨ Konten ini pertama tayang di Instagram kami — sekarang dibagikan ke Threads!\n\n"
            f"📌 {judul}:\n{isi}\n\n"
            f"Menurut kamu, tips SEO/AI mana yang paling relevan buat bisnismu? Kasih pendapat di komentar! 👇\n\n"
            f"Kalau suka tips SEO terbaru & terupdate + AI, follow Instagram StudioSoft ya: @studiosoft.id — banyak konten visual fresh di sana! 🔥\n\n"
            f"#studiosoft #seo #digitalmarketing #ai #seoterbaru #tipssurabaya #belajarseo"
        )
        medias = [{"url": IMG + s, "type": "image", "alt": s} for s in slides[:4]]
        payload = {
            "accountId": SS_T,
            "title": f"StudioSoft — {judul} (dari IG)",
            "description": cap,
            "topic": "SEO & AI",
            "type": "album",
            "medias": medias,
            "scheduleAt": at,
            "replies": [
                {"text": "Follow @studiosoft.id di Instagram ya — konten SEO & AI update tiap hari! 📲", "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 | SSIGSEP_{num:02d} | {judul[:40]}")
            st["posted"].append(num)
            with open(STATE, "w") as f:
                json.dump(st, f, indent=1)
        except Exception as e:
            fail += 1
            print(f"  ❌ SSIGSEP_{num:02d}: {e}")
    print(f"\n📊 Total: {ok} OK, {fail} gagal")

if __name__ == "__main__":
    main()
