import json, urllib.request, time

API_KEY = "vio_sk_vA8llIYm51J3oyXtfevrM92yUBJ8-3IS1sIn6xydF8o"

print("🎨 Generating Kartu Oracle Nusantara style...")

payload = {
    "prompt": "Instagram story vertical image 9:16 portrait. Oracle card illustration in Nusantara Indonesian traditional art style. Warm earthy tones with gold accents. A beautifully illustrated Balinese or Javanese woman deity figure with gentle loving expression, wearing traditional kebaya and golden headdress, sitting in meditation pose surrounded by tropical flowers frangipani and lotus. Behind her traditional batik pattern mandala in soft gold. Text at top in elegant serif font: ORACLE NUSANTARA. Below the illustration a card name in decorative frame: 'DENGARKAN HATIMU'. At bottom a soft glowing quote: 'Di dalam dirimu sudah ada semua jawaban yang kamu cari.' Traditional Indonesian cultural aesthetic, mystical yet warm and inviting, like receiving guidance from a gentle wise elder. Not scary. Professional quality illustration.",
    "model": "gpt-image-2.0",
    "aspect_ratio": "9:16",
    "count": 1
}

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(20):
        time.sleep(8)
        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}/20) {s}")
            if s == 'completed':
                url = status.get('asset_url')
                print(f"  ✅ DONE! URL: {url}")
                break
            elif s == 'failed':
                print(f"  ❌ FAILED: {status.get('error_message')}")
                break
