#!/usr/bin/env python3
"""Deskripsi gambar via OpenRouter vision (free model) — debug raw response."""
import base64, json, urllib.request

KEY = open('/home/mantapman/.openrouter_key').read().strip()
IMG = 'media/inbound/openclaw-staged-a68ba680-68f7-4cfd-89b5-8111983f2ab3/c46cab1a-e490-4f7a-a3f9-8e699b2ebb99.jpg'

with open(IMG, 'rb') as f:
    b64 = base64.b64encode(f.read()).decode()

body = {
    "model": "nvidia/nemotron-nano-12b-v2-vl:free",
    "max_tokens": 500,
    "messages": [{"role": "user", "content": [
        {"type": "text", "text": "Ini adalah storyboard video. Deskripsikan SETIAP scene/panel secara berurutan dalam Bahasa Indonesia: apa yang terjadi, orang/benda, aksi, sudut kamera. Sebutkan 'Scene 1:', 'Scene 2:' dst. Detail."},
        {"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{b64}"}}
    ]}]
}
req = urllib.request.Request("https://openrouter.ai/api/v1/chat/completions",
    data=json.dumps(body).encode(),
    headers={"Authorization": f"Bearer {KEY}", "Content-Type": "application/json"})
try:
    with urllib.request.urlopen(req, timeout=180) as r:
        raw = r.read()
    print("RAW (first 2000):")
    print(raw[:2000].decode(errors="replace"))
    d = json.loads(raw)
    if "choices" in d:
        print("\n---CONTENT---")
        print(d["choices"][0]["message"]["content"])
    else:
        print("\n---NO CHOICES---")
        print(json.dumps(d, ensure_ascii=False)[:1000])
except Exception as e:
    print("ERROR:", e)
    try:
        print(e.read().decode()[:600])
    except Exception:
        pass
