diff options
Diffstat (limited to 'gallery_dl/extractor/sankaku.py')
| -rw-r--r-- | gallery_dl/extractor/sankaku.py | 28 |
1 files changed, 13 insertions, 15 deletions
diff --git a/gallery_dl/extractor/sankaku.py b/gallery_dl/extractor/sankaku.py index 1c93cbf..5caad4b 100644 --- a/gallery_dl/extractor/sankaku.py +++ b/gallery_dl/extractor/sankaku.py @@ -152,12 +152,8 @@ class SankakuPoolExtractor(SankakuExtractor): pattern = BASE_PATTERN + r"/(?:books|pools?/show)/(\w+)" example = "https://sankaku.app/books/12345" - def __init__(self, match): - SankakuExtractor.__init__(self, match) - self.pool_id = match[1] - def metadata(self): - pool = self.api.pools(self.pool_id) + pool = self.api.pools(self.groups[0]) pool["tags"] = [tag["name"] for tag in pool["tags"]] pool["artist_tags"] = [tag["name"] for tag in pool["artist_tags"]] @@ -178,12 +174,8 @@ class SankakuPostExtractor(SankakuExtractor): pattern = BASE_PATTERN + r"/posts?(?:/show)?/(\w+)" example = "https://sankaku.app/post/show/12345" - def __init__(self, match): - SankakuExtractor.__init__(self, match) - self.post_id = match[1] - def posts(self): - return self.api.posts(self.post_id) + return self.api.posts(self.groups[0]) class SankakuBooksExtractor(SankakuExtractor): @@ -207,12 +199,14 @@ class SankakuBooksExtractor(SankakuExtractor): class SankakuAPI(): """Interface for the sankaku.app API""" + ROOT = "https://sankakuapi.com" + VERSION = None def __init__(self, extractor): self.extractor = extractor self.headers = { "Accept" : "application/vnd.sankaku.api+json;v=2", - "Api-Version": None, + "Api-Version": self.VERSION, "Origin" : extractor.root, } @@ -281,7 +275,7 @@ class SankakuAPI(): _authenticate_impl(self.extractor, self.username, self.password) def _call(self, endpoint, params=None): - url = "https://sankakuapi.com" + endpoint + url = self.ROOT + endpoint for _ in range(5): self.authenticate() response = self.extractor.request( @@ -307,6 +301,10 @@ class SankakuAPI(): ("unauthorized", "invalid-token", "invalid_token")): _authenticate_impl.invalidate(self.username) continue + try: + code = f"'{code.rpartition('__')[2].replace('-', ' ')}'" + except Exception: + pass raise exception.AbortExtraction(code) return data @@ -357,12 +355,12 @@ class SankakuAPI(): def _authenticate_impl(extr, username, password): extr.log.info("Logging in as %s", username) - url = "https://sankakuapi.com/auth/token" - headers = {"Accept": "application/vnd.sankaku.api+json;v=2"} + api = extr.api + url = api.ROOT + "/auth/token" data = {"login": username, "password": password} response = extr.request( - url, method="POST", headers=headers, json=data, fatal=False) + url, method="POST", headers=api.headers, json=data, fatal=False) data = response.json() if response.status_code >= 400 or not data.get("success"): |
