add to_dict method to playerqueue
authorMarcel van der Veldt <m.vanderveldt@outlook.com>
Tue, 12 Apr 2022 14:32:28 +0000 (16:32 +0200)
committerMarcel van der Veldt <m.vanderveldt@outlook.com>
Tue, 12 Apr 2022 14:32:28 +0000 (16:32 +0200)
music_assistant/models/player.py
music_assistant/models/player_queue.py

index d15d58d49dbc0c02f9829a297c704910a5aa20a2..7fada5236f49690c843a2d3c51320ff2d25324a7 100755 (executable)
@@ -281,7 +281,7 @@ class Player(ABC):
             "player_id": self.player_id,
             "name": self.name,
             "powered": self.powered,
-            "elapsed_time": self.elapsed_time,
+            "elapsed_time": int(self.elapsed_time),
             "state": self.state.value,
             "available": self.available,
             "is_group": self.is_group,
index 8c47ccf2c04f8322a7b41b27e646ff2da11eefa8..5a15864fab2b5ed344b6487a5c1a0aff51b04706 100644 (file)
@@ -6,7 +6,7 @@ import random
 from asyncio import Task, TimerHandle
 from dataclasses import dataclass
 from enum import Enum
-from typing import TYPE_CHECKING, List, Optional, Tuple, Union
+from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple, Union
 from uuid import uuid4
 
 from mashumaro import DataClassDictMixin
@@ -638,6 +638,27 @@ class PlayerQueue:
         """Indicate that queue stream needs to start next index once playback finished."""
         self._signal_next = True
 
+    def to_dict(self) -> Dict[str, Any]:
+        """Export object to dict."""
+        cur_item = self.current_item.to_dict() if self.current_item else None
+        next_item = self.next_item.to_dict() if self.next_item else None
+        return {
+            "queue_id": self.queue_id,
+            "player": self.player.player_id,
+            "name": self.player.name,
+            "active": self.active,
+            "elapsed_time": int(self.elapsed_time),
+            "state": self.player.state.value,
+            "available": self.player.available,
+            "current_item": cur_item,
+            "next_item": next_item,
+            "shuffle_enabled": self.shuffle_enabled,
+            "repeat_enabled": self.repeat_enabled,
+            "volume_normalization_enabled": self.volume_normalization_enabled,
+            "volume_normalization_target": self.volume_normalization_target,
+            "crossfade_duration": self.crossfade_duration,
+        }
+
     def __get_queue_stream_index(self) -> Tuple[int, int]:
         """Calculate current queue index and current track elapsed time."""
         # player is playing a constant stream so we need to do this the hard way