import json, urllib.request, time

API = "vio_sk_vA8llIYm51J3oyXtfevrM92yUBJ8-3IS1sIn6xydF8o"
H = {'Content-Type':'application/json','Authorization':f'Bearer {API}','User-Agent':'curl/7.88.1','Accept':'*/*'}
H2 = {'Authorization':f'Bearer {API}','User-Agent':'curl/7.88.1'}

stories = [
    ("29 Jun - Hypnotic Language",
     "Instagram story 9:16 aspect ratio full screen. Flat vector illustration style modern minimal. "
     "Background gradasi deep teal blue ke soft cream. Aksen orange. "
     "Di tengah, teks quote besar: KATA-KATA LO BISA NGEHIPNOTIS ORANG. TERMASUK DIRI LO SENDIRI. "
     "Di bawah, ikon mikrofon kecil + teks: CAROUSEL HARI INI: HYPNOTIC LANGUAGE. "
     "CTA kecil: Full slide di feed @balimentari. Desain bold clean."),

    ("30 Jun - Meta Model",
     "Instagram story 9:16 aspect ratio full screen. Flat vector illustration style modern minimal. "
     "Background gradasi deep teal blue ke soft cream. Aksen orange. "
     "Di tengah, teks quote besar: JANGAN CUMA NGANGGUK. TANYA: APA MAKSUDNYA? KAPAN? SIAPA? BUKTINYA? "
     "Di bawah, ikon kaca pembesar + teks: CAROUSEL HARI INI: META MODEL NLP. "
     "CTA: Full slide di feed @balimentari. Desain bold clean."),

    ("1 Jul - The Yes Set",
     "Instagram story 9:16 aspect ratio full screen. Flat vector illustration style modern minimal. "
     "Background gradasi deep teal blue ke soft cream. Aksen orange. "
     "Di tengah, teks quote besar: LO NGOMONG IYA. OTAK LO TERIAK GAK MAU. ITU THE YES SET. "
     "Di bawah, ikon mulut + teks: CAROUSEL HARI INI: THE YES SET. "
     "CTA: Full slide di feed @balimentari. Desain bold clean."),

    ("2 Jul - One-Word Reframe",
     "Instagram story 9:16 aspect ratio full screen. Flat vector illustration style modern minimal. "
     "Background gradasi deep teal blue ke soft cream. Aksen orange. "
     "Di tengah, teks quote besar: DI-PHK ATAU DI-BEBASKAN? BEDANYA CUMA SATU KATA. "
     "Di bawah, ikon panah berputar + teks: CAROUSEL HARI INI: ONE-WORD REFRAME. "
     "CTA: Full slide di feed @balimentari. Desain bold clean."),

    ("3 Jul - Map Not Territory",
     "Instagram story 9:16 aspect ratio full screen. Flat vector illustration style modern minimal. "
     "Background gradasi deep teal blue ke soft cream. Aksen orange. "
     "Di tengah, teks quote besar: LO GAK NGERASAIN REALITA. LO NGERASAIN PETA LO. PETA BUKAN TERRITORY. "
     "Di bawah, ikon peta + teks: CAROUSEL HARI INI: MAP IS NOT THE TERRITORY. "
     "CTA: Full slide di feed @balimentari. Desain bold clean."),
]

def gen(name, prompt):
    p = {"prompt": prompt, "model": "gpt-image-2.0", "aspect_ratio": "9:16", "count": 1}
    print(f"\n🎨 {name}...")
    req = urllib.request.Request('https://api.viostudio.id/v1/images/generate', data=json.dumps(p).encode(), headers=H, method='POST')
    with urllib.request.urlopen(req, timeout=30) as r:
        gid = json.loads(r.read())['generation_ids'][0]
        print(f"Queued: {gid}")
    for i in range(30):
        time.sleep(8)
        sr = urllib.request.Request(f'https://api.viostudio.id/v1/generations/{gid}', headers=H2)
        with urllib.request.urlopen(sr, timeout=20) as s:
            st = json.loads(s.read())
            stat = st['status']
            print(f"  ({i+1}/30) {stat}")
            if stat == 'completed':
                print(f"✅ {st['asset_url']}")
                return st['asset_url']
            elif stat == 'failed':
                print(f"❌ {st.get('error_message')}")
                return None

results = {}
for name, prompt in stories:
    results[name] = gen(name, prompt)

print("\n✅ BATCH 1 RESULTS:")
for k,v in results.items():
    print(f"  {k}: {v}")
