media.py 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. # -*- coding: utf-8 -*-
  2. """
  3. Medien-Steuerungs-Befehle.
  4. Commands für Musik- und Audio-Wiedergabe-Steuerung.
  5. """
  6. from dataclasses import dataclass, field
  7. from trixy_core.network.cmd.base import CommandMessage
  8. @dataclass
  9. class MusicPlayPause(CommandMessage):
  10. """
  11. Toggle Musik Play/Pause.
  12. Wechselt zwischen Wiedergabe und Pause.
  13. """
  14. satellite_id: str = "" # Ziel-Satellite (leer = alle)
  15. @dataclass
  16. class MusicNext(CommandMessage):
  17. """
  18. Nächstes Lied abspielen.
  19. Springt zum nächsten Lied in der Playlist.
  20. Unterstützt optionales Crossfade.
  21. """
  22. satellite_id: str = "" # Ziel-Satellite (leer = alle)
  23. use_crossfade: bool = True # Crossfade verwenden falls aktiviert
  24. @dataclass
  25. class MusicPrevious(CommandMessage):
  26. """
  27. Vorheriges Lied abspielen.
  28. Springt zum vorherigen Lied in der Playlist.
  29. """
  30. satellite_id: str = "" # Ziel-Satellite (leer = alle)
  31. use_crossfade: bool = True # Crossfade verwenden falls aktiviert
  32. @dataclass
  33. class MusicStop(CommandMessage):
  34. """
  35. Musik-Wiedergabe stoppen.
  36. Stoppt die aktuelle Musik-Wiedergabe.
  37. """
  38. satellite_id: str = "" # Ziel-Satellite (leer = alle)
  39. @dataclass
  40. class MusicVolumeChange(CommandMessage):
  41. """
  42. Musik-Lautstärke ändern.
  43. Ändert die Lautstärke der Musik-Wiedergabe.
  44. """
  45. satellite_id: str = "" # Ziel-Satellite (leer = alle)
  46. volume: float = 1.0 # Lautstärke (0.0 - 1.0)
  47. relative: bool = False # True = relative Änderung, False = absolute
  48. @dataclass
  49. class MediaStopAll(CommandMessage):
  50. """
  51. Alle Medien-Wiedergabe stoppen.
  52. Stoppt sowohl Musik als auch TTS-Ausgaben.
  53. """
  54. satellite_id: str = "" # Ziel-Satellite (leer = alle)
  55. @dataclass
  56. class MusicStatus(CommandMessage):
  57. """
  58. Musik-Status abfragen.
  59. Fordert den aktuellen Status der Musik-Wiedergabe an.
  60. """
  61. satellite_id: str = "" # Ziel-Satellite
  62. @dataclass
  63. class MusicStatusResponse(CommandMessage):
  64. """
  65. Musik-Status Antwort.
  66. Enthält den aktuellen Status der Musik-Wiedergabe.
  67. """
  68. satellite_id: str = ""
  69. is_playing: bool = False
  70. is_paused: bool = False
  71. current_track: str = ""
  72. track_position_ms: int = 0
  73. track_duration_ms: int = 0
  74. playlist_index: int = 0
  75. playlist_length: int = 0
  76. volume: float = 1.0