From: Marcel van der Veldt Date: Tue, 9 Jul 2024 20:24:24 +0000 (+0200) Subject: some tweaks X-Git-Url: https://git.kitaultman.com/?a=commitdiff_plain;h=3351e2ea63862d918cc8f9b7d5237571919d197e;p=music-assistant-server.git some tweaks --- diff --git a/music_assistant/common/models/api.py b/music_assistant/common/models/api.py index dfbfd663..ee91666f 100644 --- a/music_assistant/common/models/api.py +++ b/music_assistant/common/models/api.py @@ -58,6 +58,7 @@ class ServerInfoMessage(DataClassORJSONMixin): min_supported_schema_version: int base_url: str homeassistant_addon: bool = False + onboard_done: bool = False MessageType = ( diff --git a/music_assistant/constants.py b/music_assistant/constants.py index c949429e..8df52aea 100644 --- a/music_assistant/constants.py +++ b/music_assistant/constants.py @@ -65,6 +65,7 @@ CONF_ANNOUNCE_VOLUME_MAX: Final[str] = "announce_volume_max" 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" diff --git a/music_assistant/server/controllers/config.py b/music_assistant/server/controllers/config.py index 85c45732..9165e40b 100644 --- a/music_assistant/server/controllers/config.py +++ b/music_assistant/server/controllers/config.py @@ -30,6 +30,7 @@ from music_assistant.common.models.enums import EventType, PlayerState, Provider 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, @@ -73,6 +74,7 @@ class ConfigController: """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) @@ -83,6 +85,11 @@ class ConfigController: 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: diff --git a/music_assistant/server/controllers/metadata.py b/music_assistant/server/controllers/metadata.py index b38b5ee1..12cb75a2 100644 --- a/music_assistant/server/controllers/metadata.py +++ b/music_assistant/server/controllers/metadata.py @@ -42,6 +42,10 @@ from music_assistant.common.models.media_items import ( ) 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, @@ -234,21 +238,36 @@ class MetaDataController(CoreController): 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 ): diff --git a/music_assistant/server/providers/filesystem_local/base.py b/music_assistant/server/providers/filesystem_local/base.py index 0a0b6f3b..221c30bf 100644 --- a/music_assistant/server/providers/filesystem_local/base.py +++ b/music_assistant/server/providers/filesystem_local/base.py @@ -850,7 +850,8 @@ class FileSystemProviderBase(MusicProvider): 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: diff --git a/music_assistant/server/server.py b/music_assistant/server/server.py index 9d722398..0b39b72c 100644 --- a/music_assistant/server/server.py +++ b/music_assistant/server/server.py @@ -204,6 +204,7 @@ class MusicAssistant: 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")