File size: 1,477 Bytes
c109c49
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import logging, json, google.generativeai as genai
logger = logging.getLogger(__name__)

def probe_available_models():
    try:
        models = [m.name for m in genai.list_models()]
        for m in ["models/gemini-1.5-flash", "models/gemini-1.5-pro", "models/gemini-pro"]:
            if m in models: return m.replace("models/", "")
        return models[0].replace("models/", "") if models else "gemini-pro"
    except: return "gemini-1.5-flash"

def cleanup_json_response(resp_text):
    resp_text = resp_text.strip()
    if resp_text.startswith("```"):
        resp_text = resp_text.split("```", 2)[1]
        if resp_text.startswith("json"): resp_text = resp_text[4:]
        resp_text = resp_text.strip()
    try:
        start_idx = resp_text.index("{")
        depth = 0
        for i in range(start_idx, len(resp_text)):
            if resp_text[i] == "{": depth += 1
            elif resp_text[i] == "}":
                depth -= 1
                if depth == 0: return resp_text[start_idx:i+1]
    except: pass
    return resp_text

def get_fallback_result(transcript_data):
    return {
        "metadata": {"title": "Unknown", "detectedMood": "Abstract", "energyLevel": 0.5, "coverArtPrompt": "Moody abstract"},
        "script": [{"text": t["text"], "timestamp": t["start"], "duration": 2.5,
                    "visuals": {"primaryColor": "#ffffff", "typography": "fade", "position": "center", "energy": 0.5}}
                   for t in transcript_data]
    }