Fix: use correct provider instance name
authorMarcel van der Veldt <m.vanderveldt@outlook.com>
Mon, 17 Feb 2025 19:26:57 +0000 (20:26 +0100)
committerMarcel van der Veldt <m.vanderveldt@outlook.com>
Mon, 17 Feb 2025 19:26:57 +0000 (20:26 +0100)
music_assistant/models/provider.py
music_assistant/providers/filesystem_local/__init__.py
music_assistant/providers/filesystem_smb/__init__.py
music_assistant/providers/podcastfeed/__init__.py
music_assistant/providers/spotify/__init__.py

index d598dffc8f8b97757fa32ff527c326f77df37256..01c21d05f8368fd0c7276ce672ab732d5c4f5be7 100644 (file)
@@ -3,7 +3,7 @@
 from __future__ import annotations
 
 import logging
-from typing import TYPE_CHECKING, Any
+from typing import TYPE_CHECKING, Any, final
 
 from music_assistant.constants import CONF_LOG_LEVEL, MASS_LOGGER_NAME
 
@@ -72,25 +72,34 @@ class Provider:
         """Handle MDNS service state callback."""
 
     @property
+    @final
     def type(self) -> ProviderType:
         """Return type of this provider."""
         return self.manifest.type
 
     @property
+    @final
     def domain(self) -> str:
         """Return domain for this provider."""
         return self.manifest.domain
 
     @property
+    @final
     def instance_id(self) -> str:
         """Return instance_id for this provider(instance)."""
         return self.config.instance_id
 
     @property
+    @final
     def name(self) -> str:
         """Return (custom) friendly name for this provider instance."""
         if self.config.name:
             return self.config.name
+        return self.default_name
+
+    @property
+    def default_name(self) -> str:
+        """Return a default name for this provider instance."""
         inst_count = len([x for x in self.mass.music.providers if x.domain == self.domain])
         if inst_count > 1:
             postfix = self.instance_id[-8:]
@@ -102,7 +111,7 @@ class Provider:
         return {
             "type": self.type.value,
             "domain": self.domain,
-            "name": self.config.name or self.name,
+            "name": self.name,
             "instance_id": self.instance_id,
             "lookup_key": self.lookup_key,
             "supported_features": [x.value for x in self.supported_features],
index 150ecfa08e2600a05885394da563e9e50fd93b69..fcfc00544616f3e59837c9c95d79d97cfa9c75c7 100644 (file)
@@ -187,10 +187,8 @@ class LocalFileSystemProvider(MusicProvider):
         return False
 
     @property
-    def name(self) -> str:
-        """Return (custom) friendly name for this provider instance."""
-        if self.config.name:
-            return self.config.name
+    def default_name(self) -> str:
+        """Return default name for this provider instance."""
         postfix = self.base_path.split(os.sep)[-1]
         return f"{self.manifest.name} {postfix}"
 
index bc2c5b004708936618438e9e4c3f113fe2093f3c..72b2213e644b7bd455500baefffe128b6dbba247 100644 (file)
@@ -145,10 +145,8 @@ class SMBFileSystemProvider(LocalFileSystemProvider):
     """
 
     @property
-    def name(self) -> str:
-        """Return (custom) friendly name for this provider instance."""
-        if self.config.name:
-            return self.config.name
+    def default_name(self) -> str:
+        """Return default name for this provider instance."""
         share = str(self.config.get_value(CONF_SHARE))
         subfolder = str(self.config.get_value(CONF_SUBFOLDER))
         if subfolder:
@@ -156,7 +154,7 @@ class SMBFileSystemProvider(LocalFileSystemProvider):
         elif share:
             postfix = share
         else:
-            return super().name
+            return super().default_name
         return f"{self.manifest.name} {postfix}"
 
     async def handle_async_init(self) -> None:
index bf9148dd4c631e24c18a2ab7ebc622123efc0334..0e18cc7f04cb1117fa8b49faaba77d1a4e0ed714 100644 (file)
@@ -125,12 +125,12 @@ class PodcastMusicprovider(MusicProvider):
         return False
 
     @property
-    def name(self) -> str:
-        """Return (custom) friendly name for this provider instance."""
+    def default_name(self) -> str:
+        """Return default name for this provider instance."""
         if self.parsed:
             postfix = self.parsed["title"]
             return f"{self.manifest.name}: {postfix}"
-        return super().name
+        return super().default_name
 
     async def get_library_podcasts(self) -> AsyncGenerator[Podcast, None]:
         """Retrieve library/subscribed podcasts from the provider."""
index 6c15b72ae11ed1b90a9b708866a512d3bfd1dfdc..7557a9084ace6963464587826eb53f3177e4f0eb 100644 (file)
@@ -288,8 +288,8 @@ class SpotifyProvider(MusicProvider):
         return base
 
     @property
-    def name(self) -> str:
-        """Return (custom) friendly name for this provider instance."""
+    def default_name(self) -> str:
+        """Return default name for this provider instance."""
         if self._sp_user:
             postfix = self._sp_user["display_name"]
             return f"{self.manifest.name}: {postfix}"