[aryion] update favorite extractor

- add test case
- add docs/supportedsites entry
- add custom directory_fmt and archive_fmt
- remove constructor
- appease flake8
pull/5887/head
Mike Fährmann 2 months ago
parent 19e98ef8e9
commit 156a70bec0
No known key found for this signature in database
GPG Key ID: 5680CA389D365A88

@ -184,7 +184,7 @@ Consider all listed sites to potentially be NSFW.
<tr> <tr>
<td>Eka's Portal</td> <td>Eka's Portal</td>
<td>https://aryion.com/</td> <td>https://aryion.com/</td>
<td>Galleries, Posts, Tag Searches</td> <td>Favorites, Galleries, Posts, Tag Searches</td>
<td>Supported</td> <td>Supported</td>
</tr> </tr>
<tr> <tr>

@ -79,22 +79,20 @@ class AryionExtractor(Extractor):
def metadata(self): def metadata(self):
"""Return general metadata""" """Return general metadata"""
def _pagination_params(self, url, params=None, favorite_items=False): def _pagination_params(self, url, params=None, needle=None):
if params is None: if params is None:
params = {"p": 1} params = {"p": 1}
else: else:
params["p"] = text.parse_int(params.get("p"), 1) params["p"] = text.parse_int(params.get("p"), 1)
if favorite_items == True: if needle is None:
begin = "class='gallery-item favorite' id='" needle = "class='gallery-item' id='"
else:
begin = "class='gallery-item' id='"
while True: while True:
page = self.request(url, params=params).text page = self.request(url, params=params).text
cnt = 0 cnt = 0
for post_id in text.extract_iter(page, begin, "'"): for post_id in text.extract_iter(page, needle, "'"):
cnt += 1 cnt += 1
yield post_id yield post_id
@ -203,19 +201,21 @@ class AryionGalleryExtractor(AryionExtractor):
url = "{}/g4/latest.php?name={}".format(self.root, self.user) url = "{}/g4/latest.php?name={}".format(self.root, self.user)
return util.advance(self._pagination_next(url), self.offset) return util.advance(self._pagination_next(url), self.offset)
class AryionFavoriteExtractor(AryionExtractor): class AryionFavoriteExtractor(AryionExtractor):
"""Extractor for a user's favorites gallery""" """Extractor for a user's favorites gallery"""
subcategory = "favorite" subcategory = "favorite"
directory_fmt = ("{category}", "{user!l}", "favorites")
archive_fmt = "f_{user}_{id}"
categorytransfer = True categorytransfer = True
pattern = BASE_PATTERN + r"/favorites/([^/?#]+)" pattern = BASE_PATTERN + r"/favorites/([^/?#]+)"
example = "https://aryion.com/g4/favorites/USER" example = "https://aryion.com/g4/favorites/USER"
def __init__(self, match):
AryionExtractor.__init__(self, match)
def posts(self): def posts(self):
url = "{}/g4/favorites/{}".format(self.root, self.user) url = "{}/g4/favorites/{}".format(self.root, self.user)
return self._pagination_params(url, favorite_items=True) return self._pagination_params(
url, None, "class='gallery-item favorite' id='")
class AryionTagExtractor(AryionExtractor): class AryionTagExtractor(AryionExtractor):
"""Extractor for tag searches on eka's portal""" """Extractor for tag searches on eka's portal"""

@ -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"), "#category": ("", "aryion", "tag"),
"#class" : aryion.AryionTagExtractor, "#class" : aryion.AryionTagExtractor,
"#count" : ">= 5", "#count" : ">= 5",

Loading…
Cancel
Save