From 19426019a29acb38b0dd4fae23bab1bd39cb48a0 Mon Sep 17 00:00:00 2001 From: Benexl Date: Sun, 27 Jul 2025 00:38:55 +0300 Subject: [PATCH] fix(anilist-api): user media list pagination --- .../assets/graphql/anilist/queries/media-list.gql | 3 ++- fastanime/libs/media_api/anilist/mapper.py | 12 +++++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/fastanime/assets/graphql/anilist/queries/media-list.gql b/fastanime/assets/graphql/anilist/queries/media-list.gql index 97e4e8a..64216c1 100644 --- a/fastanime/assets/graphql/anilist/queries/media-list.gql +++ b/fastanime/assets/graphql/anilist/queries/media-list.gql @@ -8,8 +8,9 @@ query ( ) { Page(perPage: $perPage, page: $page) { pageInfo { - currentPage total + currentPage + hasNextPage } mediaList(userId: $userId, status: $status, type: $type, sort: $sort) { mediaId diff --git a/fastanime/libs/media_api/anilist/mapper.py b/fastanime/libs/media_api/anilist/mapper.py index 43cb6c8..bb50698 100644 --- a/fastanime/libs/media_api/anilist/mapper.py +++ b/fastanime/libs/media_api/anilist/mapper.py @@ -271,8 +271,7 @@ def to_generic_search_result( _to_generic_media_item(item, user_media_list_item) for item, user_media_list_item in zip(raw_media_list, user_media_list) ] - # TODO: further probe this type - page_info = _to_generic_page_info(page_data) # type: ignore + page_info = _to_generic_page_info(page_data["pageInfo"]) else: media_items: List[MediaItem] = [ _to_generic_media_item(item) for item in raw_media_list @@ -294,7 +293,14 @@ def to_generic_user_list_result(data: AnilistMediaLists) -> Optional[MediaSearch # Now that we have a standard list of media, we can reuse the main search result mapper return to_generic_search_result( - {"data": {"Page": {"media": raw_media_list}}}, # pyright:ignore + { + "data": { + "Page": { + "media": raw_media_list, + "pageInfo": page_data["pageInfo"], + }, + } + }, media_list_items, )