diff options
Diffstat (limited to 'gallery_dl/extractor/aryion.py')
| -rw-r--r-- | gallery_dl/extractor/aryion.py | 36 |
1 files changed, 34 insertions, 2 deletions
diff --git a/gallery_dl/extractor/aryion.py b/gallery_dl/extractor/aryion.py index 04bb146..2e4c4d4 100644 --- a/gallery_dl/extractor/aryion.py +++ b/gallery_dl/extractor/aryion.py @@ -9,7 +9,8 @@ """Extractors for https://aryion.com/""" from .common import Extractor, Message -from .. import text, util +from .. import text, util, exception +from ..cache import cache BASE_PATTERN = r"(?:https?://)?(?:www\.)?aryion\.com/g4" @@ -21,6 +22,8 @@ class AryionExtractor(Extractor): directory_fmt = ("{category}", "{user!l}", "{path:J - }") filename_fmt = "{id} {title}.{extension}" archive_fmt = "{id}" + cookiedomain = ".aryion.com" + cookienames = ("phpbb3_rl7a3_sid",) root = "https://aryion.com" def __init__(self, match): @@ -28,7 +31,30 @@ class AryionExtractor(Extractor): self.user = match.group(1) self.recursive = True + def login(self): + username, password = self._get_auth_info() + if username: + self._update_cookies(self._login_impl(username, password)) + + @cache(maxage=14*24*3600, keyarg=1) + def _login_impl(self, username, password): + self.log.info("Logging in as %s", username) + + url = self.root + "/forum/ucp.php?mode=login" + data = { + "username": username, + "password": password, + "login": "Login", + } + + response = self.request(url, method="POST", data=data) + if b"You have been successfully logged in." not in response.content: + raise exception.AuthenticationError() + return {c: response.cookies[c] for c in self.cookienames} + def items(self): + self.login() + for post_id in self.posts(): post = self._parse_post(post_id) if post: @@ -68,6 +94,7 @@ class AryionExtractor(Extractor): # folder if headers["content-type"] in ( "application/x-folder", + "application/x-comic-folder", "application/x-comic-folder-nomerge", ): return False @@ -184,11 +211,16 @@ class AryionPostExtractor(AryionExtractor): "_mtime" : "Sat, 16 Feb 2019 19:30:34 GMT", }, }), - # folder (#694) + # x-folder (#694) ("https://aryion.com/g4/view/588928", { "pattern": pattern, "count": ">= 8", }), + # x-comic-folder (#945) + ("https://aryion.com/g4/view/537379", { + "pattern": pattern, + "count": 2, + }), ) def posts(self): |
