#!/usr/bin/env python3
"""Upload carousel album to Repliz API and schedule it."""
import base64
import json
import os
import sys
import time
import urllib.request

from repliz_client import BASE_URL, HEADERS, ACC, AUTH_HEADER
ACCOUNT_ID = ACC.DMARK_IG

# Jadwal: 21:00 WIB = 14:00 UTC
# Sekarang: ~20:40 WIB
SCHEDULE_AT = "2026-06-28T14:00:00.000Z"

DIR = "/home/mantapman/.hermes/profiles/atun/workspace/dmark_tips_listicle"
FILES = [
    "01_cover.png",
    "slide_02.png",
    "slide_03.png",
    "slide_04.png",
    "slide_05.png",
    "slide_06.png",
    "slide_07.png",
    "slide_08.png",
    "slide_09.png",
    "slide_10.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)
    except urllib.error.HTTPError as e:
        return {"error": e.code, "body": e.read().decode()}

# Step 1: Upload each file as base64
def upload_file(filepath):
    """Upload file ke server OpenClaw — FIX 21/08 (no base64)."""
    return upload_image_to_server(filepath)

# Step 2: Create album schedule with all images embedded
print("🎯 Preparing album payload...")

medias = []
for fname in FILES:
    fpath = os.path.join(DIR, fname)
    img_url = upload_file(fpath)
    medias.append({
        "url": img_url,
        "type": "image",
        "alt": name,
    })
    print(f"  ✅ {os.path.basename(fpath)} → {img_url}")

payload = {
    "title": "",
    "description": (
        "Ingin bisnis Anda makin berkembang di era digital? 🚀\n\n"
        "Kami sudah merangkum 10 tips digital marketing terbaru yang bisa "
        "langsung kamu terapkan. Dari SEO sampai ide konten kreatif, "
        "semuanya ada di sini!\n\n"
        "Slide by: DMARK — Digital Marketing Agency"
    ),
    "topic": "Digital Marketing Tips",
    "type": "album",
    "medias": medias,
    "meta": {
        "title": "",
        "description": "",
        "url": "",
    },
    "additionalInfo": {
        "isAiGenerated": False,
        "isDraft": False,
        "collaborators": [],
        "mentions": [],
        "music": {"id": "", "artist": "", "name": "", "thumbnail": ""},
        "products": [],
        "tags": [],
    },
    "replies": [],
    "accountId": ACCOUNT_ID,
    "scheduleAt": SCHEDULE_AT,
}

print(f"\n📤 Creating album schedule for {SCHEDULE_AT}...")
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', 'unknown')}")
    print(f"📅 Scheduled at: {SCHEDULE_AT} (21:00 WIB)")

