import json, urllib.request, time, sys

API_KEY = "vio_sk_vA8llIYm51J3oyXtfevrM92yUBJ8-3IS1sIn6xydF8o"
BASE = "https://api.viostudio.id/v1"

prompt = """Instagram carousel cover slide portrait 4:5 aspect ratio ukuran feed Instagram. Flat vector illustration style.

Background gradasi dari soft cream (#FFF8F0) ke deep teal blue (#1A5F7A). Aksen dekoratif garis lengkung organik dan titik-titik kecil warna orange (#FF9F43).

Ilustrasi utama: seorang karakter duduk santai sambil memegang setir mobil, tapi mata karakter terpejam dan ada ikon mimpi/pikiran di atas kepalanya — melambangkan autopilot bawah sadar. Style flat vector minimalis.

Teks HOOK paling besar dan bold di bagian atas, font sans-serif tebal, ukuran sangat besar dan jelas:
"KAMU PIKIR KAMU"

Teks HOOK lanjutan di bawahnya ukuran sama besarnya:
"YANG KENDALIIN?"

Teks sub-heading ukuran sedang di bawah hook:
"Coba deh cek contoh-contoh ini..."

Teks kecil di pojok bawah:
"Geser ➡️"

Elemen dekoratif: mata besar dengan pola spiral di irisnya melambangkan bawah sadar, ditempatkan sebagai ornamen di sisi kiri. Warna orange sebagai aksen. Desain bold, striking, font sangat besar dan mudah terbaca di Instagram feed."""

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

print("🎨 Generating COVER - 'Kamu pikir kamu yang kendaliin?'")
sys.stdout.flush()

req = urllib.request.Request(
    f'{BASE}/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}")
    sys.stdout.flush()
    
    for i in range(30):
        time.sleep(10)
        status_req = urllib.request.Request(
            f'{BASE}/generations/{gen_id}',
            headers={'Authorization': f'Bearer {API_KEY}', 'User-Agent': 'Mozilla/5.0'}
        )
        with urllib.request.urlopen(status_req, timeout=20) as sr:
            status = json.loads(sr.read())
            s = status.get('status')
            print(f"  ({i+1}/30) {s}")
            sys.stdout.flush()
            if s == 'completed':
                url = status.get('asset_url')
                print(f"\n✅ COVER DONE!")
                print(f"📸 {url}")
                break
            elif s == 'failed':
                print(f"❌ FAILED: {status.get('error_message')}")
                break
