import requests
import base64
import time

from config import MISTY_IP
from analyse import analysiere, gib_feedback

DATEINAME = "aufnahme.wav"
AUFNAHME_DAUER_S = 10

def starte_aufnahme():
    print(f"--- Schritt 1: Aufnahme ({AUFNAHME_DAUER_S}s) ---")
    try:
        requests.delete(f"http://{MISTY_IP}/api/audio?fileName={DATEINAME}", timeout=2)
        response = requests.post(f"http://{MISTY_IP}/api/audio/record/start",
            json={"fileName": DATEINAME}, timeout=5)
        if response.status_code == 200:
            print("🔴 Misty hört zu...")
            time.sleep(AUFNAHME_DAUER_S)
            requests.post(f"http://{MISTY_IP}/api/audio/record/stop", timeout=5)
            print("⏹️ Aufnahme beendet.")
            time.sleep(3)
            return True
    except Exception as e:
        print(f"❌ Fehler bei Aufnahme: {e}")
        return False

def lade_datei():
    print("--- Schritt 2: Datei vom Roboter laden ---")
    url = f"http://{MISTY_IP}/api/audio?fileName={DATEINAME}&base64=true"
    try:
        response = requests.get(url, timeout=20)
        if response.status_code == 200:
            audio_bytes = base64.b64decode(response.json()["result"]["base64"])
            with open(DATEINAME, "wb") as f:
                f.write(audio_bytes)
            print("✅ Datei geladen.")
            return True
    except Exception as e:
        print(f"❌ Fehler beim Laden: {e}")
        return False

if __name__ == "__main__":
    print("🚀 Rhetorik-Check gestartet")
    if starte_aufnahme():
        if lade_datei():
            anzahl, text = analysiere(DATEINAME)
            gib_feedback(anzahl)
    print("--- PROGRAMM BEENDET ---")
