From: Jc2k Date: Thu, 9 Jan 2025 16:44:31 +0000 (+0000) Subject: fix: Make sure that Jellyfin playlists are sorted and paginated (#1847) X-Git-Url: https://git.kitaultman.com/?a=commitdiff_plain;h=dd58fa567b14efbcd960bf8c61acb13d88a30137;p=music-assistant-server.git fix: Make sure that Jellyfin playlists are sorted and paginated (#1847) fix: Make sure that Jellyfin playlists are sorted correctly and track fetching is paginated --- diff --git a/music_assistant/providers/jellyfin/__init__.py b/music_assistant/providers/jellyfin/__init__.py index 7c79b1e4..3390ee33 100644 --- a/music_assistant/providers/jellyfin/__init__.py +++ b/music_assistant/providers/jellyfin/__init__.py @@ -410,23 +410,21 @@ class JellyfinProvider(MusicProvider): async def get_playlist_tracks(self, prov_playlist_id: str, page: int = 0) -> list[Track]: """Get playlist tracks.""" result: list[Track] = [] - if page > 0: - # paging not supported, we always return the whole list at once - return [] - # TODO: Does Jellyfin support paging here? playlist_items = ( - await self._client.tracks.parent(prov_playlist_id) + await self._client.tracks.in_playlist(prov_playlist_id) .enable_userdata() .fields(*TRACK_FIELDS) + .limit(100) + .start_index(page * 100) .request() ) for index, jellyfin_track in enumerate(playlist_items["Items"], 1): + pos = (page * 100) + index try: if track := parse_track( self.logger, self.instance_id, self._client, jellyfin_track ): - if not track.position: - track.position = index + track.position = pos result.append(track) except (KeyError, ValueError) as err: self.logger.error( diff --git a/music_assistant/providers/jellyfin/manifest.json b/music_assistant/providers/jellyfin/manifest.json index cf9cca56..af85a57b 100644 --- a/music_assistant/providers/jellyfin/manifest.json +++ b/music_assistant/providers/jellyfin/manifest.json @@ -4,7 +4,7 @@ "name": "Jellyfin Media Server Library", "description": "Support for the Jellyfin streaming provider in Music Assistant.", "codeowners": ["@lokiberra", "@Jc2k"], - "requirements": ["aiojellyfin==0.10.1"], + "requirements": ["aiojellyfin==0.11.2"], "documentation": "https://music-assistant.io/music-providers/jellyfin/", "multi_instance": true } diff --git a/requirements_all.txt b/requirements_all.txt index c2cde8b6..1455e75e 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -4,7 +4,7 @@ Brotli>=1.0.9 aiodns>=3.0.0 aiofiles==24.1.0 aiohttp==3.11.6 -aiojellyfin==0.10.1 +aiojellyfin==0.11.2 aiorun==2024.8.1 aioslimproto==3.1.0 aiosonos==0.1.7