From: Jc2k Date: Thu, 13 Jun 2024 12:32:34 +0000 (+0100) Subject: Jellyfin: Fetch favorite userdata into library (#1353) X-Git-Url: https://git.kitaultman.com/?a=commitdiff_plain;h=dc285f9af2cbbfe81c5fa1427454427adf50ba49;p=music-assistant-server.git Jellyfin: Fetch favorite userdata into library (#1353) --- diff --git a/music_assistant/server/providers/jellyfin/__init__.py b/music_assistant/server/providers/jellyfin/__init__.py index f94cec13..17548dd2 100644 --- a/music_assistant/server/providers/jellyfin/__init__.py +++ b/music_assistant/server/providers/jellyfin/__init__.py @@ -83,6 +83,7 @@ from .const import ( ITEM_KEY_PROVIDER_IDS, ITEM_KEY_RUNTIME_TICKS, ITEM_KEY_SORT_NAME, + ITEM_KEY_USER_DATA, ITEM_TYPE_ALBUM, ITEM_TYPE_ARTIST, ITEM_TYPE_AUDIO, @@ -90,6 +91,7 @@ from .const import ( MAX_IMAGE_WIDTH, SUPPORTED_CONTAINER_FORMATS, USER_APP_NAME, + USER_DATA_KEY_IS_FAVORITE, ) CONF_URL = "url" @@ -345,6 +347,8 @@ class JellyfinProvider(MusicProvider): artist_item[ITEM_KEY_NAME], ) ) + user_data = current_jellyfin_album.get(ITEM_KEY_USER_DATA, {}) + album.favorite = user_data.get(USER_DATA_KEY_IS_FAVORITE, False) return album async def _parse_artist(self, jellyfin_artist: dict[str, Any]) -> Artist: @@ -388,6 +392,8 @@ class JellyfinProvider(MusicProvider): remotely_accessible=False, ) ] + user_data = current_artist.get(ITEM_KEY_USER_DATA, {}) + artist.favorite = user_data.get(USER_DATA_KEY_IS_FAVORITE, False) return artist async def _parse_track(self, jellyfin_track: dict[str, Any]) -> Track: @@ -494,6 +500,8 @@ class JellyfinProvider(MusicProvider): track.name, exc_info=error if self.logger.isEnabledFor(logging.DEBUG) else None, ) + user_data = current_jellyfin_track.get(ITEM_KEY_USER_DATA, {}) + track.favorite = user_data.get(USER_DATA_KEY_IS_FAVORITE, False) return track async def _parse_playlist(self, jellyfin_playlist: dict[str, Any]) -> Playlist: @@ -522,6 +530,8 @@ class JellyfinProvider(MusicProvider): remotely_accessible=False, ) ] + user_data = jellyfin_playlist.get(ITEM_KEY_USER_DATA, {}) + playlist.favorite = user_data.get(USER_DATA_KEY_IS_FAVORITE, False) playlist.is_editable = False return playlist diff --git a/music_assistant/server/providers/jellyfin/const.py b/music_assistant/server/providers/jellyfin/const.py index 2d6f16d1..9809659b 100644 --- a/music_assistant/server/providers/jellyfin/const.py +++ b/music_assistant/server/providers/jellyfin/const.py @@ -40,6 +40,7 @@ ITEM_KEY_ARTIST_ITEMS: Final = "ArtistItems" ITEM_KEY_CAN_DOWNLOAD: Final = "CanDownload" ITEM_KEY_PARENT_INDEX_NUM: Final = "ParentIndexNumber" ITEM_KEY_RUNTIME_TICKS: Final = "RunTimeTicks" +ITEM_KEY_USER_DATA: Final = "UserData" ITEM_TYPE_ALBUM: Final = "MusicAlbum" ITEM_TYPE_ARTIST: Final = "MusicArtist" @@ -47,6 +48,8 @@ ITEM_TYPE_MUSICARTISTS: Final = "MusicArtists" ITEM_TYPE_AUDIO: Final = "Audio" ITEM_TYPE_LIBRARY: Final = "CollectionFolder" +USER_DATA_KEY_IS_FAVORITE: Final = "IsFavorite" + MAX_IMAGE_WIDTH: Final = 500 MAX_STREAMING_BITRATE: Final = "140000000"