From f87ed61cd07e3a136e0bee9ff7ba4ed438ac6afa Mon Sep 17 00:00:00 2001 From: Marcel van der Veldt Date: Thu, 24 Oct 2024 22:44:23 +0200 Subject: [PATCH] Fixes for dont stop the music --- music_assistant/common/models/player_queue.py | 2 +- .../server/controllers/player_queues.py | 17 ++++++++++------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/music_assistant/common/models/player_queue.py b/music_assistant/common/models/player_queue.py index 3832742f7..dbeca3257 100644 --- a/music_assistant/common/models/player_queue.py +++ b/music_assistant/common/models/player_queue.py @@ -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 diff --git a/music_assistant/server/controllers/player_queues.py b/music_assistant/server/controllers/player_queues.py index 2a1d37563..206b0e2c0 100644 --- a/music_assistant/server/controllers/player_queues.py +++ b/music_assistant/server/controllers/player_queues.py @@ -275,6 +275,14 @@ def set_shuffle(self, queue_id: str, shuffle_enabled: bool) -> None: @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 @@ async def on_player_register(self, player: Player) -> None: 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 @@ def on_player_update( 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