import os
from dotenv import load_dotenv
from openai import OpenAI

load_dotenv()

def analyze_transcript_with_deepseek(transcript_text):
    api_key = os.getenv("NVIDIA_API_KEY")
    if not api_key:
        raise ValueError("NVIDIA_API_KEY wurde nicht in der .env Datei gefunden!")

    client = OpenAI(
        base_url="https://integrate.api.nvidia.com/v1",
        api_key=api_key
    )

    # DER NEUE, STRIKTE PROMPT FÜR EXAKTE 50 SEKUNDEN GESAMTLÄNGE
    system_prompt = (
        "Du bist ein viraler Social-Media-Experte. Analysiere das Video-Transkript. "
        "Finde die 3 spannendsten Momente, die als EIN EINZIGES Best-of-Video zusammengeschnitten werden. "
        "WICHTIGE REGEL: Die gesamte Compilation darf MAXIMAL 50 Sekunden lang sein! "
        "Wähle also 3 kurze, extrem knackige Szenen, die JEDE für sich NUR 10 bis 15 Sekunden dauern. "
        "Achte auf einen starken Hook ganz am Anfang. Gib mir nur die Start- und Endzeiten (Timecodes) "
        "und eine kurze Begründung zurück."
    )

    print("Sende Transkript an DeepSeek 3.2 685B (Strikte 50-Sekunden-Regel aktiv)...")
    print("--- DeepSeek Antwort ---")

    try:
        completion = client.chat.completions.create(
            model="deepseek-ai/deepseek-v3.2",
            messages=[
                {"role": "system", "content": system_prompt},
                {"role": "user", "content": f"Hier ist das Transkript:\n\n{transcript_text}"}
            ],
            temperature=0.5, # Noch etwas kühler für striktere Befolgung der Zeiten
            top_p=0.95,
            max_tokens=2048,
            extra_body={"chat_template_kwargs": {"thinking": True}},
            stream=True
        )

        full_content = ""
        
        for chunk in completion:
            if not getattr(chunk, "choices", None):
                continue
            
            reasoning = getattr(chunk.choices[0].delta, "reasoning_content", None)
            if reasoning:
                print(f"\033[90m{reasoning}\033[0m", end="", flush=True)
                
            if chunk.choices and chunk.choices[0].delta.content is not None:
                content_chunk = chunk.choices[0].delta.content
                full_content += content_chunk
                print(content_chunk, end="", flush=True)
        
        print("\n")
        return full_content

    except Exception as e:
        print(f"\nFehler bei der API-Anfrage: {e}")
        return None

if __name__ == "__main__":
    test_transcript = "Hallo Leute! Heute verschenke ich eine Insel! Aber zuerst müsst ihr diesen Knopf drücken. Das ist völlig verrückt..."
    ergebnis = analyze_transcript_with_deepseek(test_transcript)
