diff --git a/docs/supportedsites.md b/docs/supportedsites.md index 0bc38b32..21c2390b 100644 --- a/docs/supportedsites.md +++ b/docs/supportedsites.md @@ -184,7 +184,7 @@ Consider all listed sites to potentially be NSFW. Eka's Portal https://aryion.com/ - Galleries, Posts, Tag Searches + Favorites, Galleries, Posts, Tag Searches Supported diff --git a/gallery_dl/extractor/aryion.py b/gallery_dl/extractor/aryion.py index ec862632..17b780e2 100644 --- a/gallery_dl/extractor/aryion.py +++ b/gallery_dl/extractor/aryion.py @@ -79,18 +79,20 @@ class AryionExtractor(Extractor): def metadata(self): """Return general metadata""" - def _pagination_params(self, url, params=None): + def _pagination_params(self, url, params=None, needle=None): if params is None: params = {"p": 1} else: params["p"] = text.parse_int(params.get("p"), 1) + if needle is None: + needle = "class='gallery-item' id='" + while True: page = self.request(url, params=params).text cnt = 0 - for post_id in text.extract_iter( - page, "class='gallery-item' id='", "'"): + for post_id in text.extract_iter(page, needle, "'"): cnt += 1 yield post_id @@ -200,6 +202,21 @@ class AryionGalleryExtractor(AryionExtractor): return util.advance(self._pagination_next(url), self.offset) +class AryionFavoriteExtractor(AryionExtractor): + """Extractor for a user's favorites gallery""" + subcategory = "favorite" + directory_fmt = ("{category}", "{user!l}", "favorites") + archive_fmt = "f_{user}_{id}" + categorytransfer = True + pattern = BASE_PATTERN + r"/favorites/([^/?#]+)" + example = "https://aryion.com/g4/favorites/USER" + + def posts(self): + url = "{}/g4/favorites/{}".format(self.root, self.user) + return self._pagination_params( + url, None, "class='gallery-item favorite' id='") + + class AryionTagExtractor(AryionExtractor): """Extractor for tag searches on eka's portal""" subcategory = "tag" diff --git a/test/results/aryion.py b/test/results/aryion.py index 8b91e342..113a4d95 100644 --- a/test/results/aryion.py +++ b/test/results/aryion.py @@ -31,7 +31,18 @@ __tests__ = ( }, { - "#url" : "https://aryion.com/g4/tags.php?tag=star+wars&p=19", + "#url" : "https://aryion.com/g4/favorites/jameshoward", + "#category": ("", "aryion", "favorite"), + "#class" : aryion.AryionFavoriteExtractor, + "#range" : "1-10", + "#count" : 10, + + "user" : "jameshoward", + "artist" : "re:^((?!jameshoward).)*$", +}, + +{ + "#url" : "https://aryion.com/g4/tags.php?tag=star+wars&p=28", "#category": ("", "aryion", "tag"), "#class" : aryion.AryionTagExtractor, "#count" : ">= 5",