[aryion] update favorite extractor
- add test case - add docs/supportedsites entry - add custom directory_fmt and archive_fmt - remove constructor - appease flake8
This commit is contained in:
@@ -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",
|
||||||
|
|||||||
Reference in New Issue
Block a user