"""Tierstimmen-Spiel „Pogodi životinju" (Errate das Tier).

Geräusche werden EINMAL über die ElevenLabs-Sound-Effects-API erzeugt und als
mp3 in data/audio/animals/ gespeichert (kein API-Call pro Spielrunde).
"""
from __future__ import annotations

from . import config

# slug, Deutsch, Serbisch, Emoji, Sound-Beschreibung (englisch = bestes SFX-Prompt)
ANIMALS = [
    {"slug": "krava", "de": "Kuh", "sr": "krava", "emoji": "🐮", "sfx": "a single cow mooing, clear and friendly, farm animal"},
    {"slug": "pas", "de": "Hund", "sr": "pas", "emoji": "🐶", "sfx": "a happy small dog barking, woof woof"},
    {"slug": "macka", "de": "Katze", "sr": "mačka", "emoji": "🐱", "sfx": "a cute kitten meowing softly"},
    {"slug": "ovca", "de": "Schaf", "sr": "ovca", "emoji": "🐑", "sfx": "a sheep baaing, baa baa"},
    {"slug": "konj", "de": "Pferd", "sr": "konj", "emoji": "🐴", "sfx": "a horse neighing and whinnying"},
    {"slug": "patka", "de": "Ente", "sr": "patka", "emoji": "🦆", "sfx": "a duck quacking, quack quack"},
    {"slug": "petao", "de": "Hahn", "sr": "petao", "emoji": "🐓", "sfx": "a rooster crowing, cock a doodle doo, morning"},
    {"slug": "prase", "de": "Schwein", "sr": "prase", "emoji": "🐷", "sfx": "a pig oinking and snorting"},
    {"slug": "zaba", "de": "Frosch", "sr": "žaba", "emoji": "🐸", "sfx": "a frog croaking, ribbit ribbit"},
    {"slug": "lav", "de": "Löwe", "sr": "lav", "emoji": "🦁", "sfx": "a lion roaring, powerful but not scary"},
]


def list_animals() -> list[dict]:
    out = []
    for a in ANIMALS:
        d = config.AUDIO_DIR / "animals"
        mp3 = d / f"{a['slug']}.mp3"
        if mp3.exists():
            ver = int(mp3.stat().st_mtime)
            entry = {"slug": a["slug"], "de": a["de"], "sr": a["sr"], "emoji": a["emoji"],
                     "sound_url": f"/audio/animals/{a['slug']}.mp3?t={ver}"}
            say = d / f"say_{a['slug']}.mp3"
            if say.exists():
                entry["say_url"] = f"/audio/animals/say_{a['slug']}.mp3?t={int(say.stat().st_mtime)}"
            out.append(entry)
    return out
