From 725baedad3e33506babba2889a33d24285b7d0af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20F=C3=A4hrmann?= Date: Fri, 17 Feb 2023 23:11:35 +0100 Subject: [PATCH] [deviantart] use '/collections/all' endpoint for favorites (#3666 ,#3668) --- gallery_dl/extractor/deviantart.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/gallery_dl/extractor/deviantart.py b/gallery_dl/extractor/deviantart.py index a3187fa1..d98b9737 100644 --- a/gallery_dl/extractor/deviantart.py +++ b/gallery_dl/extractor/deviantart.py @@ -676,15 +676,9 @@ class DeviantartFavoriteExtractor(DeviantartExtractor): ) def deviations(self): - folders = self.api.collections_folders(self.user) if self.flat: - deviations = itertools.chain.from_iterable( - self.api.collections(self.user, folder["folderid"]) - for folder in folders - ) - if self.offset: - deviations = util.advance(deviations, self.offset) - return deviations + return self.api.collections_all(self.user, self.offset) + folders = self.api.collections_folders(self.user) return self._folder_urls( folders, "favourites", DeviantartCollectionExtractor) @@ -1261,6 +1255,13 @@ class DeviantartOAuthAPI(): "mature_content": self.mature} return self._pagination(endpoint, params) + def collections_all(self, username, offset=0): + """Yield all deviations in a user's collection""" + endpoint = "/collections/all" + params = {"username": username, "offset": offset, "limit": 24, + "mature_content": self.mature} + return self._pagination(endpoint, params) + @memcache(keyarg=1) def collections_folders(self, username, offset=0): """Yield all collection folders of a specific user"""