#!/usr/bin/env python3
"""Schedule FB StudioSoft carousel album via Repliz."""
import base64, json, os, sys, urllib.request, urllib.error

from repliz_client import HEADERS, BASE_URL as BASE


ACCOUNT_FB = "6a334952c5ff4ce3a3225941"  # FB StudioSoft
SLOT = "2026-07-25T08:00:00.000Z"  # 15:00 WIB
CAR_DIR = "/home/mantapman/.hermes/profiles/atun/workspace/ai_overview_carousel"
FILES = ["01_cover.png","02_ai_overviews.png","03_seo_vs_geo.png","04_search_everywhere.png","05_langkah.png"]

def api_call(method, endpoint, data=None):
    url = f"{BASE_URL}{endpoint}"
    body = json.dumps(data).encode() if data else None
    req = urllib.request.Request(url, data=body, headers=HEADERS, method=method)
    try:
        with urllib.request.urlopen(req) as resp:
            raw = resp.read()
            if resp.status == 204:
                return {"success": True}
            return json.loads(raw) if raw else {"success": True}
    except urllib.error.HTTPError as e:
        body = e.read().decode()
        return {"error": e.code, "body": json.loads(body) if body.startswith('{') else body[:500]}

# Build medias
medias = []
for fname in FILES:
    fpath = os.path.join(CAR_DIR, fname)
    img_url = upload_image_to_server(fpath)
    # FIX 21/08: no base64 — image via server OpenClaw
    medias.append({
        "url": img_url,
        "type": "image",
        "alt": fname.replace(".png","").replace("_"," "),
    })

# Facebook caption: 2 paragraf + hashtags (aturan StudioSoft FB)
fb_caption = (
    "Google AI Overviews sekarang muncul di 16% dari seluruh pencarian "
    "naik dari 6,5% setahun lalu. Jutaan pengguna mendapat jawaban "
    "langsung dari AI tanpa perlu klik ke website.\n\n"
    "Ini bukan akhir SEO, tapi evolusi menuju Search Everywhere "
    "Optimization. Brand harus muncul tidak cuma di Google, tapi juga "
    "di ChatGPT, YouTube, Reddit, Perplexity, dan platform lain.\n\n"
    "Data dari Backlinko: referral AI/LLM naik 800% dalam 3 bulan. "
    "ChatGPT sudah 900 juta weekly users. Semrush prediksi LLM akan "
    "overtake Google search akhir 2027.\n\n"
    "Kuncinya: konten informatif, otoritas pihak ketiga (review, "
    "forum, publikasi), dan teknis website yang rapi.\n\n"
    "Baca artikel lengkapnya: "
    "https://studiosoft.id/6-tren-seo-2026-yang-wajib-dikuasai-pebisnis-malang/\n\n"
    "#SEO2026 #AIOverview #SearchEverywhere #DigitalMarketing #StudioSoft"
)

fb_replies = [
    "Apa beda SEO dan GEO?\n\n"
    "SEO: optimasi untuk ranking di Google (keyword + backlink).\n"
    "GEO: optimasi untuk disebut di jawaban AI (ChatGPT, Gemini, dll).\n\n"
    "Keduanya penting. Tapi yang sering terlewat: AI 6,5x lebih "
    "sering mengutip brand dari sumber pihak ketiga daripada "
    "website sendiri.",

    "3 langkah memulai Search Everywhere Optimization:\n\n"
    "1. Audit di mana audiens Anda mencari\n"
    "2. Optimasi managed experiences (website, GBP, sosmed)\n"
    "3. Bangun influenced experiences (review, forum, publikasi)\n\n"
    "Siap mulai? StudioSoft bantu bisnis Anda berkembang di era AI search."
    "\nhttps://studiosoft.id",
]

payload = {
    "title": "",
    "description": fb_caption,
    "topic": "AI Overview, GEO, SEO, Search Everywhere",
    "type": "album",
    "medias": medias,
    "meta": {
        "title": "6 Tren SEO 2026",
        "description": "AI Overview, GEO dan Search Everywhere Optimization",
        "url": "https://studiosoft.id/6-tren-seo-2026-yang-wajib-dikuasai-pebisnis-malang/"
    },
    "additionalInfo": {
        "isAiGenerated": False, "isDraft": False,
        "collaborators": [], "mentions": [],
        "music": {"id": "", "artist": "", "name": "", "thumbnail": ""},
        "products": [], "tags": [],
    },
    "replies": [{"text": r, "username": ""} for r in fb_replies],
    "accountId": ACCOUNT_FB,
    "scheduleAt": SLOT,
}

print("=" * 60)
print("FB STUDIOSOFT - CAROUSEL ALBUM")
print(f"Schedule: {SLOT} (15:00 WIB)")
print("=" * 60)

result = api_call("POST", "/public/schedule", payload)
if "error" in result:
    print(f"ERROR: {result['error']} - {result.get('body','')}")
    sys.exit(1)
else:
    print(f"SUCCESS! Schedule ID: {result.get('scheduleId','?')}")

print("DONE")

