min_supported_schema_version: int
base_url: str
homeassistant_addon: bool = False
+ onboard_done: bool = False
MessageType = (
CONF_ICON: Final[str] = "icon"
CONF_LANGUAGE: Final[str] = "language"
CONF_SAMPLE_RATES: Final[str] = "sample_rates"
+CONF_ONBOARD_DONE: Final[str] = "onboard_done"
# config default values
DEFAULT_HOST: Final[str] = "0.0.0.0"
from music_assistant.common.models.errors import InvalidDataError, PlayerUnavailableError
from music_assistant.constants import (
CONF_CORE,
+ CONF_ONBOARD_DONE,
CONF_PLAYERS,
CONF_PROVIDERS,
CONF_SERVER_ID,
"""Async initialize of controller."""
await self._load()
self.initialized = True
+ self.set_default(CONF_ONBOARD_DONE, len(self._data.get(CONF_PROVIDERS, {})) > 0)
# create default server ID if needed (also used for encrypting passwords)
self.set_default(CONF_SERVER_ID, uuid4().hex)
server_id: str = self.get(CONF_SERVER_ID)
config_entries.DECRYPT_CALLBACK = self.decrypt_string
LOGGER.debug("Started.")
+ @property
+ def onboard_done(self) -> bool:
+ """Return True if onboarding is done."""
+ return self.get(CONF_ONBOARD_DONE, False)
+
async def close(self) -> None:
"""Handle logic on server stop."""
if not self._timer_handle:
)
from music_assistant.constants import (
CONF_LANGUAGE,
+ DB_TABLE_ALBUMS,
+ DB_TABLE_ARTISTS,
+ DB_TABLE_PLAYLISTS,
+ DB_TABLE_TRACKS,
VARIOUS_ARTISTS_ID_MBID,
VARIOUS_ARTISTS_NAME,
VERBOSE_LOG_LEVEL,
try:
timestamp = int(time() - 60 * 60 * 24 * 7)
query = (
- "WHERE json_extract(metadata,'$.last_refresh') ISNULL "
- f"OR json_extract(metadata,'$.last_refresh') < {timestamp}"
+ f"WHERE json_extract({DB_TABLE_ARTISTS}.metadata,'$.last_refresh') ISNULL "
+ f"OR json_extract({DB_TABLE_ARTISTS}.metadata,'$.last_refresh') < {timestamp}"
)
for artist in await self.mass.music.artists.library_items(
limit=250, order_by="random", extra_query=query
):
await self._update_artist_metadata(artist)
+
+ query = (
+ f"WHERE json_extract({DB_TABLE_ALBUMS}.metadata,'$.last_refresh') ISNULL "
+ f"OR json_extract({DB_TABLE_ALBUMS}.metadata,'$.last_refresh') < {timestamp}"
+ )
for album in await self.mass.music.albums.library_items(
limit=250, order_by="random", extra_query=query
):
await self._update_album_metadata(album)
+
+ query = (
+ f"WHERE json_extract({DB_TABLE_TRACKS}.metadata,'$.last_refresh') ISNULL "
+ f"OR json_extract({DB_TABLE_TRACKS}.metadata,'$.last_refresh') < {timestamp}"
+ )
for track in await self.mass.music.tracks.library_items(
limit=50, order_by="random", extra_query=query
):
await self._update_track_metadata(track)
+
+ query = (
+ f"WHERE json_extract({DB_TABLE_PLAYLISTS}.metadata,'$.last_refresh') ISNULL "
+ f"OR json_extract({DB_TABLE_PLAYLISTS}.metadata,'$.last_refresh') < {timestamp}"
+ )
for playlist in await self.mass.music.playlists.library_items(
limit=250, order_by="random", extra_query=query
):
explicit_tag = tags.get("itunesadvisory")
if explicit_tag is not None:
track.metadata.explicit = explicit_tag == "1"
- track.mbid = tags.musicbrainz_recordingid
+ if tags.musicbrainz_recordingid:
+ track.mbid = tags.musicbrainz_recordingid
track.metadata.chapters = UniqueList(tags.chapters)
if album:
if not album.mbid and tags.musicbrainz_albumid:
min_supported_schema_version=MIN_SCHEMA_VERSION,
base_url=self.webserver.base_url,
homeassistant_addon=self.running_as_hass_addon,
+ onboard_done=self.config.onboard_done,
)
@api_command("providers/manifests")