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
"""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:]
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],
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}"
"""
@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:
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:
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."""
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}"