CLIENT_VERSION,\r
ITEM_KEY_ALBUM,\r
ITEM_KEY_ALBUM_ARTIST,\r
+ ITEM_KEY_ALBUM_ARTISTS,\r
+ ITEM_KEY_ALBUM_ID,\r
ITEM_KEY_ARTIST_ITEMS,\r
ITEM_KEY_CAN_DOWNLOAD,\r
ITEM_KEY_COLLECTION_TYPE,\r
album.artists.append(\r
self._get_item_mapping(\r
MediaType.ARTIST,\r
- current_jellyfin_album[ITEM_KEY_PARENT_ID],\r
+ current_jellyfin_album[ITEM_KEY_ALBUM_ARTISTS][0].get(ITEM_KEY_ID),\r
current_jellyfin_album[ITEM_KEY_ALBUM_ARTIST],\r
)\r
)\r
elif len(current_jellyfin_album.get(ITEM_KEY_ARTIST_ITEMS, [])) >= 1:\r
- num_artists = len(current_jellyfin_album[ITEM_KEY_ARTIST_ITEMS])\r
- for i in range(num_artists):\r
+ for artist_item in current_jellyfin_album[ITEM_KEY_ARTIST_ITEMS]:\r
album.artists.append(\r
self._get_item_mapping(\r
MediaType.ARTIST,\r
- current_jellyfin_album[ITEM_KEY_ARTIST_ITEMS][i][ITEM_KEY_ID],\r
- current_jellyfin_album[ITEM_KEY_ARTIST_ITEMS][i][ITEM_KEY_NAME],\r
+ artist_item[ITEM_KEY_ID],\r
+ artist_item[ITEM_KEY_NAME],\r
)\r
)\r
return album\r
remotely_accessible=False,\r
)\r
]\r
- if len(current_jellyfin_track[ITEM_KEY_ARTIST_ITEMS]) >= 1:\r
- track.artists.append(\r
- self._get_item_mapping(\r
- MediaType.ARTIST,\r
- current_jellyfin_track[ITEM_KEY_ARTIST_ITEMS][0][ITEM_KEY_ID],\r
- current_jellyfin_track[ITEM_KEY_ARTIST_ITEMS][0][ITEM_KEY_NAME],\r
- )\r
- )\r
- num_artists = len(current_jellyfin_track[ITEM_KEY_ARTIST_ITEMS])\r
- for i in range(num_artists):\r
+\r
+ if current_jellyfin_track[ITEM_KEY_ARTIST_ITEMS]:\r
+ for artist_item in current_jellyfin_track[ITEM_KEY_ARTIST_ITEMS]:\r
track.artists.append(\r
self._get_item_mapping(\r
MediaType.ARTIST,\r
- current_jellyfin_track[ITEM_KEY_ARTIST_ITEMS][i][ITEM_KEY_ID],\r
- current_jellyfin_track[ITEM_KEY_ARTIST_ITEMS][i][ITEM_KEY_NAME],\r
+ artist_item[ITEM_KEY_ID],\r
+ artist_item[ITEM_KEY_NAME],\r
)\r
)\r
- elif ITEM_KEY_PARENT_ID in current_jellyfin_track:\r
+ elif ITEM_KEY_ALBUM_ID in current_jellyfin_track:\r
parent_album = API.get_item(\r
- self._jellyfin_server.jellyfin, current_jellyfin_track[ITEM_KEY_PARENT_ID]\r
+ self._jellyfin_server.jellyfin, current_jellyfin_track[ITEM_KEY_ALBUM_ID]\r
)\r
- if ITEM_KEY_PARENT_ID in parent_album and ITEM_KEY_ALBUM_ARTIST in parent_album:\r
+ if ITEM_KEY_ALBUM_ID in parent_album and ITEM_KEY_ALBUM_ARTIST in parent_album:\r
track.artists.append(\r
self._get_item_mapping(\r
MediaType.ARTIST,\r
- parent_album[ITEM_KEY_PARENT_ID],\r
+ parent_album[ITEM_KEY_ALBUM_ID],\r
parent_album[ITEM_KEY_ALBUM_ARTIST],\r
)\r
)\r
track.artists.append(await self._parse_artist(name=VARIOUS_ARTISTS_NAME))\r
else:\r
track.artists.append(await self._parse_artist(name=VARIOUS_ARTISTS_NAME))\r
- if (\r
- ITEM_KEY_PARENT_ID in current_jellyfin_track\r
- and ITEM_KEY_ALBUM in current_jellyfin_track\r
- ):\r
+ if ITEM_KEY_ALBUM_ID in current_jellyfin_track and ITEM_KEY_ALBUM in current_jellyfin_track:\r
track.album = self._get_item_mapping(\r
MediaType.ALBUM,\r
- current_jellyfin_track[ITEM_KEY_PARENT_ID],\r
+ current_jellyfin_track[ITEM_KEY_ALBUM_ID],\r
current_jellyfin_track[ITEM_KEY_ALBUM],\r
)\r
- elif ITEM_KEY_PARENT_ID in current_jellyfin_track:\r
+ elif ITEM_KEY_ALBUM_ID in current_jellyfin_track:\r
parent_album = API.get_item(\r
- self._jellyfin_server.jellyfin, current_jellyfin_track[ITEM_KEY_PARENT_ID]\r
+ self._jellyfin_server.jellyfin, current_jellyfin_track[ITEM_KEY_ALBUM_ID]\r
)\r
track.album = self._get_item_mapping(\r
MediaType.ALBUM,\r
"""Retrieve all library artists from Jellyfin Music."""\r
jellyfin_libraries = await self._get_music_libraries(self._jellyfin_server)\r
for jellyfin_library in jellyfin_libraries:\r
- artists_obj = await self._get_children(\r
- self._jellyfin_server, jellyfin_library[ITEM_KEY_ID], ITEM_TYPE_ARTIST\r
+ response = API._get(\r
+ self._jellyfin_server.jellyfin,\r
+ "Artists",\r
+ {\r
+ ITEM_KEY_PARENT_ID: jellyfin_library[ITEM_KEY_ID],\r
+ "ArtistType": "Artist,AlbumArtist",\r
+ },\r
)\r
+ artists_obj = response["Items"]\r
for artist in artists_obj:\r
yield await self._parse_artist(artist)\r
\r
self._jellyfin_server, playlist_library[ITEM_KEY_ID], "Playlist"\r
)\r
for playlist in playlists_obj:\r
- if playlist["MediaType"] == "Audio":\r
+ if "MediaType" in playlist: # Only jellyfin has this property\r
+ if playlist["MediaType"] == "Audio":\r
+ yield await self._parse_playlist(playlist)\r
+ else: # emby playlists are only audio type\r
yield await self._parse_playlist(playlist)\r
\r
async def get_album(self, prov_album_id) -> Album:\r
ITEM_KEY_PARENT_ID: parent_id,\r
}\r
if item_type in ITEM_TYPE_ARTIST:\r
- params["IncludeItemTypes"] = [ITEM_TYPE_MUSICARTISTS, ITEM_TYPE_ARTIST]\r
+ params["IncludeItemTypes"] = f"{ITEM_TYPE_MUSICARTISTS},{ITEM_TYPE_ARTIST}"\r
else:\r
params["IncludeItemTypes"] = item_type\r
if item_type in ITEM_TYPE_AUDIO:\r