From b39657f8e4faea23389dd1c47a0c89be67da4524 Mon Sep 17 00:00:00 2001 From: Marcel van der Veldt Date: Thu, 19 Sep 2024 23:32:16 +0200 Subject: [PATCH] sort provider mappings - local first at all times --- music_assistant/server/controllers/metadata.py | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/music_assistant/server/controllers/metadata.py b/music_assistant/server/controllers/metadata.py index 2022a413..dc76944a 100644 --- a/music_assistant/server/controllers/metadata.py +++ b/music_assistant/server/controllers/metadata.py @@ -447,9 +447,12 @@ class MetaDataController(CoreController): # ensure the item is matched to all providers await self.mass.music.artists.match_providers(artist) - # collect metadata from all (streaming) music providers - # NOTE: local providers have already pushed their metadata in the sync - for prov_mapping in artist.provider_mappings: + # collect metadata from all music providers + # note that we sort the providers by priority so that we always + # prefer local providers over online providers + for prov_mapping in sorted( + artist.provider_mappings, key=lambda x: x.priority, reverse=True + ): if (prov := self.mass.get_provider(prov_mapping.provider_instance)) is None: continue if prov.lookup_key in unique_keys: @@ -507,10 +510,13 @@ class MetaDataController(CoreController): # ensure the item is matched to all providers (will also get other quality versions) await self.mass.music.albums.match_providers(album) - # collect metadata from all (streaming) music providers - # NOTE: local providers have already pushed their metadata in the sync + # collect metadata from all music providers + # note that we sort the providers by priority so that we always + # prefer local providers over online providers unique_keys: set[str] = set() - for prov_mapping in album.provider_mappings: + for prov_mapping in sorted( + album.provider_mappings, key=lambda x: x.priority, reverse=True + ): if (prov := self.mass.get_provider(prov_mapping.provider_instance)) is None: continue if prov.lookup_key in unique_keys: -- 2.34.1