import json, urllib.request, time

API_KEY = "vio_sk_vA8llIYm51J3oyXtfevrM92yUBJ8-3IS1sIn6xydF8o"

# Slide 1 - Cover
prompt = """Instagram carousel slide, portrait 4:5 aspect ratio. Elegant modern design dengan warna deep teal blue (#1A5F7A) dan soft cream (#FFF8F0) dengan aksen orange hangat (#FF9F43).

Desain minimalis estetik. Di tengah gambar: ilustrasi gunung es sederhana — 10% di atas air (bagian sadar) dan 90% di bawah air (bagian bawah sadar), gaya flat vector.

Background: gradasi cream ke teal di bagian bawah.

Teks besar di bagian atas (dalam bahasa Indonesia):
"SADAR VS BAWAH SADAR"

Teks sub judul di bawahnya (ukuran sedang):
"Siapa Sebenarnya Yang Mengendalikan Hidupmu?"

Ada ikon bintang kecil di pojok.

Font teks: modern sans-serif clean. Gaya desain: flat vector, clean lines, calming and profesional vibe."""

payload = {
    "prompt": prompt,
    "model": "gpt-image-2.0",
    "aspect_ratio": "4:5",
    "count": 1
}

print("🎨 Generating Slide 1 - Cover...")
req = urllib.request.Request(
    'https://api.viostudio.id/v1/images/generate',
    data=json.dumps(payload).encode(),
    headers={
        'Content-Type': 'application/json',
        'Authorization': f'Bearer {API_KEY}',
        'User-Agent': 'Mozilla/5.0'
    },
    method='POST'
)

with urllib.request.urlopen(req, timeout=30) as resp:
    result = json.loads(resp.read())
    gen_id = result.get('generation_ids', [0])[0]
    print(f"✅ Queued! ID: {gen_id}")

    for i in range(30):
        time.sleep(10)
        status_req = urllib.request.Request(
            f'https://api.viostudio.id/v1/generations/{gen_id}',
            headers={'Authorization': f'Bearer {API_KEY}', 'User-Agent': 'Mozilla/5.0'}
        )
        with urllib.request.urlopen(status_req, timeout=15) as sr:
            status = json.loads(sr.read())
            s = status.get('status')
            print(f"  ({i+1}/30) {s}")
            if s == 'completed':
                url = status.get('asset_url')
                print(f"\n✅ SLIDE 1 DONE! URL: {url}")
                break
            elif s == 'failed':
                print(f"❌ FAILED: {status.get('error_message')}")
                break
