filter None objects from queue
authorMarcel van der Veldt <m.vanderveldt@outlook.com>
Fri, 1 Jul 2022 00:19:08 +0000 (02:19 +0200)
committerMarcel van der Veldt <m.vanderveldt@outlook.com>
Fri, 1 Jul 2022 00:19:08 +0000 (02:19 +0200)
music_assistant/models/player_queue.py

index ea3e5b8e40394bace1ca0f8cff4fbe1c8adff368..800b6facf474bdeb10def24f6d841cf4ba74c8f3 100644 (file)
@@ -501,7 +501,7 @@ class PlayerQueue:
             item.sort_index = index
         if self.settings.shuffle_enabled and len(queue_items) > 5:
             queue_items = random.sample(queue_items, len(queue_items))
-        self._items = queue_items
+        self._items = [x for x in queue_items if x is not None]  # filter None items
         await self.play_index(0, passive=passive)
         self.signal_update(True)
 
@@ -537,7 +537,7 @@ class PlayerQueue:
                 + queue_items
                 + self._items[insert_at_index:]
             )
-
+        self._items = [x for x in queue_items if x is not None]  # filter None items
         if offset in (0, cur_index):
             await self.play_index(insert_at_index, passive=passive)
 
@@ -712,7 +712,7 @@ class PlayerQueue:
 
     async def _update_items(self, queue_items: List[QueueItem]) -> None:
         """Update the existing queue items, mostly caused by reordering."""
-        self._items = queue_items
+        self._items = [x for x in queue_items if x is not None]  # filter None items
         self.signal_update(True)
 
     def __get_queue_stream_index(self) -> Tuple[int, int]:
@@ -755,7 +755,11 @@ class PlayerQueue:
         """Try to load the saved state from cache."""
         if queue_cache := await self.mass.cache.get(f"queue_items.{self.queue_id}"):
             try:
-                self._items = [QueueItem.from_dict(x) for x in queue_cache["items"]]
+                self._items = [
+                    QueueItem.from_dict(x)
+                    for x in queue_cache["items"]
+                    if x is not None
+                ]
                 self._current_index = queue_cache["current_index"]
                 self._current_item_elapsed_time = queue_cache.get(
                     "current_item_elapsed_time", 0