aboutsummaryrefslogtreecommitdiffstats
path: root/gallery_dl/extractor/sankaku.py
diff options
context:
space:
mode:
Diffstat (limited to 'gallery_dl/extractor/sankaku.py')
-rw-r--r--gallery_dl/extractor/sankaku.py28
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"):