summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Honz <exislow+github@gmail.com>2024-06-16 14:21:46 +0200
committerRobert Honz <exislow+github@gmail.com>2024-06-16 14:21:46 +0200
commite9af97ef915966ab107a9f294ea6dc87f9ab7df6 (patch)
tree6725127c77787e2dc94652c6fefcd5b99c9b783f
parentff8d688382c7293b4f23bfd188fd08e6886bfeda (diff)
downloadtidal-dl-ng-e9af97ef915966ab107a9f294ea6dc87f9ab7df6.tar.gz
👷 Pagination enabled for playlists. Fixes #131
-rw-r--r--tidal_dl_ng/helper/tidal.py14
1 files changed, 9 insertions, 5 deletions
diff --git a/tidal_dl_ng/helper/tidal.py b/tidal_dl_ng/helper/tidal.py
index 991c693..aec5320 100644
--- a/tidal_dl_ng/helper/tidal.py
+++ b/tidal_dl_ng/helper/tidal.py
@@ -4,6 +4,7 @@ from tidalapi import Album, Mix, Playlist, Session, Track, UserPlaylist, Video
from tidalapi.artist import Artist, Role
from tidalapi.media import MediaMetadataTags, Quality
from tidalapi.session import SearchTypes
+from tidalapi.user import LoggedInUser
from tidal_dl_ng.constants import FAVORITES, MediaType
from tidal_dl_ng.helper.exceptions import MediaUnknown
@@ -111,7 +112,7 @@ def items_results_all(
func_get_items_media.append(media_list.get_albums)
func_get_items_media.append(media_list.get_ep_singles)
- result = paginate_media(func_get_items_media)
+ result = paginate_results(func_get_items_media)
return result
@@ -119,7 +120,7 @@ def items_results_all(
def all_artist_album_ids(media_artist: Artist) -> [int | None]:
result: [int] = []
func_get_items_media: [Callable] = [media_artist.get_albums, media_artist.get_ep_singles]
- albums: [Album] = paginate_media(func_get_items_media)
+ albums: [Album] = paginate_results(func_get_items_media)
for album in albums:
result.append(album.id)
@@ -127,7 +128,7 @@ def all_artist_album_ids(media_artist: Artist) -> [int | None]:
return result
-def paginate_media(func_get_items_media: [Callable]) -> [Track | Video | Album]:
+def paginate_results(func_get_items_media: [Callable]) -> [Track | Video | Album | Playlist | UserPlaylist]:
result: [Track | Video | Album] = []
for func_media in func_get_items_media:
@@ -136,7 +137,10 @@ def paginate_media(func_get_items_media: [Callable]) -> [Track | Video | Album]:
done: bool = False
while not done:
- tmp_result: [Track | Video | Album] = func_media(limit=limit, offset=offset)
+ if func_media.__func__ == LoggedInUser.playlist_and_favorite_playlists:
+ tmp_result: [Playlist | UserPlaylist] = func_media(offset=offset)
+ else:
+ tmp_result: [Track | Video | Album] = func_media(limit=limit, offset=offset)
if bool(tmp_result):
result += tmp_result
@@ -149,7 +153,7 @@ def paginate_media(func_get_items_media: [Callable]) -> [Track | Video | Album]:
def user_media_lists(session: Session) -> [Playlist | UserPlaylist | Mix]:
- user_playlists: [Playlist | UserPlaylist] = session.user.playlist_and_favorite_playlists()
+ user_playlists: [Playlist | UserPlaylist] = paginate_results([session.user.playlist_and_favorite_playlists])
user_mixes: [Mix] = session.mixes().categories[0].items
result: [Playlist | UserPlaylist | Mix] = user_playlists + user_mixes