# -*- coding: utf-8 -*- """ Medien-Steuerungs-Befehle. Commands für Musik- und Audio-Wiedergabe-Steuerung. """ from dataclasses import dataclass, field from trixy_core.network.cmd.base import CommandMessage @dataclass class MusicPlayPause(CommandMessage): """ Toggle Musik Play/Pause. Wechselt zwischen Wiedergabe und Pause. """ satellite_id: str = "" # Ziel-Satellite (leer = alle) @dataclass class MusicNext(CommandMessage): """ Nächstes Lied abspielen. Springt zum nächsten Lied in der Playlist. Unterstützt optionales Crossfade. """ satellite_id: str = "" # Ziel-Satellite (leer = alle) use_crossfade: bool = True # Crossfade verwenden falls aktiviert @dataclass class MusicPrevious(CommandMessage): """ Vorheriges Lied abspielen. Springt zum vorherigen Lied in der Playlist. """ satellite_id: str = "" # Ziel-Satellite (leer = alle) use_crossfade: bool = True # Crossfade verwenden falls aktiviert @dataclass class MusicStop(CommandMessage): """ Musik-Wiedergabe stoppen. Stoppt die aktuelle Musik-Wiedergabe. """ satellite_id: str = "" # Ziel-Satellite (leer = alle) @dataclass class MusicVolumeChange(CommandMessage): """ Musik-Lautstärke ändern. Ändert die Lautstärke der Musik-Wiedergabe. """ satellite_id: str = "" # Ziel-Satellite (leer = alle) volume: float = 1.0 # Lautstärke (0.0 - 1.0) relative: bool = False # True = relative Änderung, False = absolute @dataclass class MediaStopAll(CommandMessage): """ Alle Medien-Wiedergabe stoppen. Stoppt sowohl Musik als auch TTS-Ausgaben. """ satellite_id: str = "" # Ziel-Satellite (leer = alle) @dataclass class MusicStatus(CommandMessage): """ Musik-Status abfragen. Fordert den aktuellen Status der Musik-Wiedergabe an. """ satellite_id: str = "" # Ziel-Satellite @dataclass class MusicStatusResponse(CommandMessage): """ Musik-Status Antwort. Enthält den aktuellen Status der Musik-Wiedergabe. """ satellite_id: str = "" is_playing: bool = False is_paused: bool = False current_track: str = "" track_position_ms: int = 0 track_duration_ms: int = 0 playlist_index: int = 0 playlist_length: int = 0 volume: float = 1.0