Fixes for dont stop the music
authorMarcel van der Veldt <m.vanderveldt@outlook.com>
Thu, 24 Oct 2024 20:44:23 +0000 (22:44 +0200)
committerMarcel van der Veldt <m.vanderveldt@outlook.com>
Thu, 24 Oct 2024 20:44:23 +0000 (22:44 +0200)
music_assistant/common/models/player_queue.py
music_assistant/server/controllers/player_queues.py

index 3832742f7c61f0e2ce2fea4827a248830a4cf9dc..dbeca3257d1cd63139c1acb426cc6c50d04fb498 100644 (file)
@@ -36,7 +36,7 @@ class PlayerQueue(DataClassDictMixin):
 
     shuffle_enabled: bool = False
     repeat_mode: RepeatMode = RepeatMode.OFF
-    dont_stop_the_music_enabled: bool = True
+    dont_stop_the_music_enabled: bool = False
     # current_index: index that is active (e.g. being played) by the player
     current_index: int | None = None
     # index_in_buffer: index that has been preloaded/buffered by the player
index 2a1d3756310b755550b7a26b81b9d36c966c9442..206b0e2c0e8d3eeecf09e41fa13eb4ab7ecd7483 100644 (file)
@@ -275,6 +275,14 @@ class PlayerQueuesController(CoreController):
     @api_command("player_queues/dont_stop_the_music")
     def set_dont_stop_the_music(self, queue_id: str, dont_stop_the_music_enabled: bool) -> None:
         """Configure Don't stop the music setting on the queue."""
+        providers_available_with_similar_tracks = any(
+            ProviderFeature.SIMILAR_TRACKS in provider.supported_features
+            for provider in self.mass.music.providers
+        )
+        if dont_stop_the_music_enabled and not providers_available_with_similar_tracks:
+            raise UnsupportedFeaturedException(
+                "Don't stop the music is not supported by any of the available music providers"
+            )
         queue = self._queues[queue_id]
         queue.dont_stop_the_music_enabled = dont_stop_the_music_enabled
         self.signal_update(queue_id=queue_id)
@@ -848,17 +856,12 @@ class PlayerQueuesController(CoreController):
                     str(err),
                 )
         if queue is None:
-            # enable dont stop the music by default if we have providers that support similar tracks
-            providers_available_with_similar_tracks = any(
-                ProviderFeature.SIMILAR_TRACKS in provider.supported_features
-                for provider in self.mass.music.providers
-            )
             queue = PlayerQueue(
                 queue_id=queue_id,
                 active=False,
                 display_name=player.display_name,
                 available=player.available,
-                dont_stop_the_music_enabled=providers_available_with_similar_tracks,
+                dont_stop_the_music_enabled=False,
                 items=0,
             )
             queue_items = []
@@ -1024,7 +1027,7 @@ class PlayerQueuesController(CoreController):
             queue.next_track_enqueued = None
 
         # watch dynamic radio items refill if needed
-        elif "current_index" in changed_keys:
+        if "current_index" in changed_keys:
             if (
                 queue.dont_stop_the_music_enabled
                 and queue.enqueued_media_items