From b7a190ae6c86199b1c263803550143a9f9d55287 Mon Sep 17 00:00:00 2001 From: Marcel van der Veldt Date: Thu, 3 Apr 2025 15:05:55 +0200 Subject: [PATCH] Fix: don't crash recommendations if one provider fails --- music_assistant/controllers/music.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/music_assistant/controllers/music.py b/music_assistant/controllers/music.py index 7c7ec682..223c924e 100644 --- a/music_assistant/controllers/music.py +++ b/music_assistant/controllers/music.py @@ -560,7 +560,7 @@ class MusicController(CoreController): results_per_provider: list[list[RecommendationFolder]] = await asyncio.gather( self._get_default_recommendations(), *[ - provider_instance.recommendations() + self._get_provider_recommendations(provider_instance) for provider_instance in recommendation_providers ], ) @@ -1192,6 +1192,21 @@ class MusicController(CoreController): ), ] + async def _get_provider_recommendations( + self, provider: MusicProvider + ) -> list[RecommendationFolder]: + """Return recommendations from a provider.""" + try: + return await provider.recommendations() + except Exception as err: + self.logger.warning( + "Error while fetching recommendations from %s: %s", + provider.name, + str(err), + exc_info=err if self.logger.isEnabledFor(logging.DEBUG) else None, + ) + return [] + def _start_provider_sync(self, provider: MusicProvider, media_type: MediaType) -> None: """Start sync task on provider and track progress.""" # check if we're not already running a sync task for this provider/mediatype -- 2.34.1