diff --git a/core/jellyfin_client.py b/core/jellyfin_client.py index da32a6c0..dac2212a 100644 --- a/core/jellyfin_client.py +++ b/core/jellyfin_client.py @@ -1470,28 +1470,39 @@ class JellyfinClient: """Get all tracks from a specific playlist""" if not self.ensure_connection(): return [] - + try: - params = { - 'ParentId': playlist_id, - 'IncludeItemTypes': 'Audio', - 'Recursive': True, - 'Fields': 'AlbumId,ArtistItems,Path,MediaSources', - 'SortBy': 'SortName', - 'SortOrder': 'Ascending' - } - - response = self._make_request(f'/Users/{self.user_id}/Items', params) - if not response: - return [] - tracks = [] - for item in response.get('Items', []): - tracks.append(JellyfinTrack(item, self)) - + start_index = 0 + limit = 1000 + + while True: + params = { + 'ParentId': playlist_id, + 'IncludeItemTypes': 'Audio', + 'Recursive': True, + 'Fields': 'AlbumId,ArtistItems,Path,MediaSources', + 'SortBy': 'SortName', + 'SortOrder': 'Ascending', + 'StartIndex': start_index, + 'Limit': limit, + } + + response = self._make_request(f'/Users/{self.user_id}/Items', params) + if not response: + break + + batch = response.get('Items', []) + for item in batch: + tracks.append(JellyfinTrack(item, self)) + + if len(batch) < limit: + break # Last page + start_index += limit + logger.debug(f"Retrieved {len(tracks)} tracks from playlist {playlist_id}") return tracks - + except Exception as e: logger.error(f"Error getting tracks for playlist {playlist_id}: {e}") return []