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'}

def gen(name, prompt):
    p = {"prompt": prompt, "model": "gpt-image-2.0", "aspect_ratio": "3:4", "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':
                url = st['asset_url']
                print(f"✅ DONE!\n📸 {url}")
                return url
            elif stat == 'failed':
                print(f"❌ {st.get('error_message')}")
                return None

u1 = gen("PP Slide 1 - Cover", """Instagram carousel cover slide 3:4 aspect ratio feed Instagram. Flat vector illustration style.

Background gradasi soft cream ke deep teal blue. Nuansa bold mind-blowing.

Ilustrasi: Satu adegan dilihat dari 3 sudut berbeda sekaligus.

POSISI 1: Karakter A (lo) lagi ngeliatin boss. Di mata lo: boss lagi MARAH, mukanya serem, jari nunjuk. Label: MATA LO.

POSISI 2: Kamera pindah ke belakang boss. Dari sudut boss: dia lagi ditekan direktur, deadline mepet, stress. Label: MATA DIA.

POSISI 3: Kamera di pojok ruangan kayak CCTV. Dari sudut orang asing: dua orang dewasa lagi komunikasi biasa. Label: MATA ORANG ASING.

Teks HOOK besar:
PERCEPTUAL POSITIONS

Teks hook:
LO BISA LIHAT DUNIA DARI MATA ORANG LAIN. SERIUSAN.

Desain bold 3-perspektif.""")

u2 = gen("PP Slide 2 - Tiga Posisi", """Instagram carousel slide 3:4 aspect ratio feed Instagram. Flat vector illustration style infografis.

Background gradasi soft cream ke deep teal blue. Aksen orange.

Ilustrasi: 3 panel besar untuk 3 posisi:

POSISI 1: FIRST POSITION — Ikon orang dengan mata sendiri. "MATA LO." Lo ngeliat dunia dari mata lo sendiri. Ngerasain emosi lo sendiri. Ini posisi DEFAULT lo. Penting, tapi terbatas.

POSISI 2: SECOND POSITION — Ikon dua orang, lo di posisi orang lain. "MATA DIA." Lo masuk ke sepatu orang lain. Ngerasain apa yang dia rasain. Ini EMPATI — bukan cuma ngerti, tapi NGERASAIN.

POSISI 3: THIRD POSITION — Ikon CCTV atau drone di atas. "MATA ORANG ASING." Lo ngeliat dari luar. Netral. Gak ada emosi lo atau dia. Cuma ngeliat fakta apa adanya.

Teks HEADLINE: 3 POSISI PERSEPSI DALAM NLP

Teks penutup: Kebanyakan orang TERJEBAK di posisi 1. Hidup lo berubah kalo lo bisa PINDAH.

Desain infografis edukatif.""")

u3 = gen("PP Slide 3 - Contoh Konflik", """Instagram carousel slide 3:4 aspect ratio feed Instagram. Flat vector illustration style komik.

Background gradasi soft cream ke deep teal blue.

Ilustrasi: Situasi: BOS NGOMONG KERAS.

Panel POSISI 1 (mata lo): Boss mukanya merah, mata melotot, jari nunjuk. Di kepala lo: "DIA BENCIN GUE. DIA MAU PECAT GUE. GUE GAK BERGUNA." Emosi: takut, marah, sedih.

Panel POSISI 2 (mata bos): Di belakang boss, ada direktur yang baru aja ngomong. Kalender deadline: BESOK. Tumpukan kerjaan boss: MENUMPUK. Di kepala boss: "GUE DITEKAN. KERJAAN NUMpuk. GUE BUTUH DIA." Emosi: stress, desperate.

Panel POSISI 3 (mata asing): Dua orang di ruangan. Satu bicara dengan suara agak keras. Satu mendengarkan. Gak ada yang istimewa.

Teks HEADLINE: BOS NGOMONG KERAS. LO NGELIAT APA?

Teks penutup: Semua posisi BENER secara subjektif. Tapi kalo lo cuma di posisi 1 lo bakal stress dan salah paham.

Desain komik insight.""")

u4 = gen("PP Slide 4 - Gimana Pindah Posisi", """Instagram carousel slide 3:4 aspect ratio feed Instagram. Flat vector illustration style infografis actionable.

Background gradasi soft cream ke deep teal blue. Aksen orange.

Ilustrasi: Karakter duduk di 3 kursi berbeda.

KURSI 1: Lo duduk. Di depan ada kursi kosong. Lo ngerasain emosi lo dulu. Akui: Gue marah. Gue takut. Gue kesel. Ngerasain SEPENUHNYA dulu.

KURSI 2: Lo pindah duduk ke kursi seberang. SEKARANG LO JADI DIA. Bayangin: gimana rasanya jadi dia? Apa yang dia takutin? Apa yang dia inginkan? Kenapa dia ngomong kayak gitu? Rasain.

KURSI 3: Lo berdiri di sudut ruangan. LIHAT DUA KURSI ITU. Kayak nonton film. Tanya: Apa yang sebenernya terjadi? Fakta apa yang ada? Tanpa emosi.

Teks HEADLINE: GIMANA CARA PINDAH POSISI?

Teks penutup: Lo gak perlu kursi beneran. Lo bisa lakuin ini di kepala lo. Kapan aja.

Desain infografis actionable.""")

print(f"\n✅ PP BATCH 1:\ns1={u1}\ns2={u2}\ns3={u3}\ns4={u4}")
