[aryion:favorite] support folder items (#8705)
This commit is contained in:
@@ -178,11 +178,8 @@ class AryionGalleryExtractor(AryionExtractor):
|
|||||||
pattern = rf"{BASE_PATTERN}/(?:gallery/|user/|latest.php\?name=)([^/?#]+)"
|
pattern = rf"{BASE_PATTERN}/(?:gallery/|user/|latest.php\?name=)([^/?#]+)"
|
||||||
example = "https://aryion.com/g4/gallery/USER"
|
example = "https://aryion.com/g4/gallery/USER"
|
||||||
|
|
||||||
def __init__(self, match):
|
|
||||||
AryionExtractor.__init__(self, match)
|
|
||||||
self.offset = 0
|
|
||||||
|
|
||||||
def _init(self):
|
def _init(self):
|
||||||
|
self.offset = 0
|
||||||
self.recursive = self.config("recursive", True)
|
self.recursive = self.config("recursive", True)
|
||||||
|
|
||||||
def skip(self, num):
|
def skip(self, num):
|
||||||
@@ -209,9 +206,41 @@ class AryionFavoriteExtractor(AryionExtractor):
|
|||||||
pattern = rf"{BASE_PATTERN}/favorites/([^/?#]+)"
|
pattern = rf"{BASE_PATTERN}/favorites/([^/?#]+)"
|
||||||
example = "https://aryion.com/g4/favorites/USER"
|
example = "https://aryion.com/g4/favorites/USER"
|
||||||
|
|
||||||
|
def _init(self):
|
||||||
|
self.recursive = self.config("recursive", True)
|
||||||
|
|
||||||
def posts(self):
|
def posts(self):
|
||||||
url = f"{self.root}/g4/favorites/{self.user}"
|
url = f"{self.root}/g4/favorites/{self.user}"
|
||||||
return self._pagination_params(url, None, "data-item-id='")
|
return self._pagination(url)
|
||||||
|
|
||||||
|
def _pagination(self, url):
|
||||||
|
params = {"p": 1}
|
||||||
|
|
||||||
|
while True:
|
||||||
|
page = self.request(url, params=params).text
|
||||||
|
|
||||||
|
cnt = 0
|
||||||
|
for item in text.extract_iter(
|
||||||
|
page, "<li class='gallery-item", "</li>"):
|
||||||
|
cnt += 1
|
||||||
|
if text.extr(item, 'data-item-type="', '"') == "Folders":
|
||||||
|
folder_url = text.extr(item, "href='", "'")
|
||||||
|
folder_name = text.unquote(
|
||||||
|
folder_url[folder_url.rfind("/")+1:])
|
||||||
|
if self.recursive:
|
||||||
|
self.log.debug(
|
||||||
|
"Descending into folder '%s'", folder_name)
|
||||||
|
self.kwdict["folder"] = folder_name
|
||||||
|
yield from self._pagination(self.root + folder_url)
|
||||||
|
del self.kwdict["folder"]
|
||||||
|
else:
|
||||||
|
self.log.debug("Skipping folder '%s'", folder_name)
|
||||||
|
else:
|
||||||
|
yield text.extr(item, "data-item-id='", "'")
|
||||||
|
|
||||||
|
if cnt < 40 and ">Next >><" not in page:
|
||||||
|
return
|
||||||
|
params["p"] += 1
|
||||||
|
|
||||||
|
|
||||||
class AryionTagExtractor(AryionExtractor):
|
class AryionTagExtractor(AryionExtractor):
|
||||||
|
|||||||
Reference in New Issue
Block a user