Fix global search with in_library active
authorMarcel van der Veldt <m.vanderveldt@outlook.com>
Fri, 19 Dec 2025 02:58:12 +0000 (03:58 +0100)
committerMarcel van der Veldt <m.vanderveldt@outlook.com>
Fri, 19 Dec 2025 02:58:12 +0000 (03:58 +0100)
music_assistant/controllers/music.py

index 6dab3f9b62490276fb79a607838882dd383f1ee4..5b853401fef74738899348b9ae65e5826b9606f5 100644 (file)
@@ -328,7 +328,7 @@ class MusicController(CoreController):
             # this way we can avoid returning duplicates in the search results
             all_prov_item_ids = {
                 (item.media_type, prov_mapping.provider_domain, prov_mapping.item_id)
-                for result in (
+                for items in (
                     library_results.artists,
                     library_results.albums,
                     library_results.tracks,
@@ -336,7 +336,7 @@ class MusicController(CoreController):
                     library_results.audiobooks,
                     library_results.podcasts,
                 )
-                for item in result
+                for item in items
                 for prov_mapping in item.provider_mappings
             }
             # include results from library + all (unique) music providers
@@ -352,52 +352,52 @@ class MusicController(CoreController):
                     for provider_instance in search_providers
                 ],
             )
-            # return result from all providers while keeping index
-            # so the result is sorted as each provider delivered
-            result = SearchResults(
-                artists=[
-                    item
-                    for sublist in zip_longest(*[x.artists for x in results_per_provider])
-                    for item in sublist
-                    if item is not None
-                ][:limit],
-                albums=[
-                    item
-                    for sublist in zip_longest(*[x.albums for x in results_per_provider])
-                    for item in sublist
-                    if item is not None
-                ][:limit],
-                tracks=[
-                    item
-                    for sublist in zip_longest(*[x.tracks for x in results_per_provider])
-                    for item in sublist
-                    if item is not None
-                ][:limit],
-                playlists=[
-                    item
-                    for sublist in zip_longest(*[x.playlists for x in results_per_provider])
-                    for item in sublist
-                    if item is not None
-                ][:limit],
-                radio=[
-                    item
-                    for sublist in zip_longest(*[x.radio for x in results_per_provider])
-                    for item in sublist
-                    if item is not None
-                ][:limit],
-                audiobooks=[
-                    item
-                    for sublist in zip_longest(*[x.audiobooks for x in results_per_provider])
-                    for item in sublist
-                    if item is not None
-                ][:limit],
-                podcasts=[
-                    item
-                    for sublist in zip_longest(*[x.podcasts for x in results_per_provider])
-                    for item in sublist
-                    if item is not None
-                ][:limit],
-            )
+        # return result from all providers while keeping index
+        # so the result is sorted as each provider delivered
+        result = SearchResults(
+            artists=[
+                item
+                for sublist in zip_longest(*[x.artists for x in results_per_provider])
+                for item in sublist
+                if item is not None
+            ][:limit],
+            albums=[
+                item
+                for sublist in zip_longest(*[x.albums for x in results_per_provider])
+                for item in sublist
+                if item is not None
+            ][:limit],
+            tracks=[
+                item
+                for sublist in zip_longest(*[x.tracks for x in results_per_provider])
+                for item in sublist
+                if item is not None
+            ][:limit],
+            playlists=[
+                item
+                for sublist in zip_longest(*[x.playlists for x in results_per_provider])
+                for item in sublist
+                if item is not None
+            ][:limit],
+            radio=[
+                item
+                for sublist in zip_longest(*[x.radio for x in results_per_provider])
+                for item in sublist
+                if item is not None
+            ][:limit],
+            audiobooks=[
+                item
+                for sublist in zip_longest(*[x.audiobooks for x in results_per_provider])
+                for item in sublist
+                if item is not None
+            ][:limit],
+            podcasts=[
+                item
+                for sublist in zip_longest(*[x.podcasts for x in results_per_provider])
+                for item in sublist
+                if item is not None
+            ][:limit],
+        )
 
         # the search results should already be sorted by relevance
         # but we apply one extra round of sorting and that is to put exact name