summaryrefslogtreecommitdiffstats
path: root/gallery_dl/extractor/schalenetwork.py
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@unit193.net>2025-10-07 02:11:45 -0400
committerLibravatarUnit 193 <unit193@unit193.net>2025-10-07 02:11:45 -0400
commitbbe7fac03d881662a458e7fbf870c9d71f5257f4 (patch)
treeb90b8974242d7fcb381e43c69c215c97c2e99197 /gallery_dl/extractor/schalenetwork.py
parent42b62671fabfdcf983a9575221420d85f7fbcac1 (diff)
New upstream version 1.30.9.upstream/1.30.9
Diffstat (limited to 'gallery_dl/extractor/schalenetwork.py')
-rw-r--r--gallery_dl/extractor/schalenetwork.py57
1 files changed, 33 insertions, 24 deletions
diff --git a/gallery_dl/extractor/schalenetwork.py b/gallery_dl/extractor/schalenetwork.py
index dc42417..a4ef3b0 100644
--- a/gallery_dl/extractor/schalenetwork.py
+++ b/gallery_dl/extractor/schalenetwork.py
@@ -62,10 +62,11 @@ class SchalenetworkExtractor(Extractor):
pass
params["page"] += 1
- def _token(self):
+ def _token(self, required=True):
if token := self.config("token"):
return f"Bearer {token.rpartition(' ')[2]}"
- raise exception.AuthRequired("'token'", "your favorites")
+ if required:
+ raise exception.AuthRequired("'token'", "your favorites")
def _crt(self):
crt = self.config("crt")
@@ -88,7 +89,7 @@ class SchalenetworkExtractor(Extractor):
else:
msg = f"{exc.status} {exc.response.reason}"
raise exception.AuthRequired(
- "'crt' query parameter & matching '--user-agent'", None, msg)
+ "'crt' query parameter & matching 'user-agent'", None, msg)
class SchalenetworkGalleryExtractor(SchalenetworkExtractor, GalleryExtractor):
@@ -114,19 +115,26 @@ class SchalenetworkGalleryExtractor(SchalenetworkExtractor, GalleryExtractor):
10: "mixed",
11: "language",
12: "other",
+ 13: "reclass",
}
def metadata(self, _):
_, gid, gkey = self.groups
+
url = f"{self.root_api}/books/detail/{gid}/{gkey}"
- data = self.request_json(url, headers=self.headers)
- data["date"] = text.parse_timestamp(data["created_at"] // 1000)
+ headers = self.headers
+ data = self.request_json(url, headers=headers)
+
+ try:
+ data["date"] = text.parse_timestamp(data["created_at"] // 1000)
+ data["count"] = len(data["thumbnails"]["entries"])
+ del data["thumbnails"]
+ except Exception:
+ pass
tags = []
types = self.TAG_TYPES
- tags_data = data["tags"]
-
- for tag in tags_data:
+ for tag in data["tags"]:
name = tag["name"]
namespace = tag.get("namespace", 0)
tags.append(types[namespace] + ":" + name)
@@ -134,33 +142,34 @@ class SchalenetworkGalleryExtractor(SchalenetworkExtractor, GalleryExtractor):
if self.config("tags", False):
tags = collections.defaultdict(list)
- for tag in tags_data :
+ for tag in data["tags"]:
tags[tag.get("namespace", 0)].append(tag["name"])
for type, values in tags.items():
data["tags_" + types[type]] = values
+ url = f"{self.root_api}/books/detail/{gid}/{gkey}?crt={self._crt()}"
+ if token := self._token(False):
+ headers = headers.copy()
+ headers["Authorization"] = token
try:
- data["count"] = len(data["thumbnails"]["entries"])
- del data["thumbnails"]
- except Exception:
- pass
+ data_fmt = self.request_json(
+ url, method="POST", headers=headers)
+ except exception.HttpError as exc:
+ self._require_auth(exc)
+
+ self.fmt = self._select_format(data_fmt["data"])
+ data["source"] = data_fmt.get("source")
return data
def images(self, _):
- crt = self._crt()
_, gid, gkey = self.groups
- url = f"{self.root_api}/books/detail/{gid}/{gkey}?crt={crt}"
- try:
- data = self.request_json(url, method="POST", headers=self.headers)
- except exception.HttpError as exc:
- self._require_auth(exc)
-
- fmt = self._select_format(data["data"])
+ fmt = self.fmt
url = (f"{self.root_api}/books/data/{gid}/{gkey}"
- f"/{fmt['id']}/{fmt['key']}/{fmt['w']}?crt={crt}")
- data = self.request_json(url, headers=self.headers)
+ f"/{fmt['id']}/{fmt['key']}/{fmt['w']}?crt={self._crt()}")
+ headers = self.headers
+ data = self.request_json(url, headers=headers)
base = data["base"]
results = []
@@ -169,7 +178,7 @@ class SchalenetworkGalleryExtractor(SchalenetworkExtractor, GalleryExtractor):
info = {
"width" : dimensions[0],
"height": dimensions[1],
- "_http_headers": self.headers,
+ "_http_headers": headers,
}
results.append((base + entry["path"], info))
return results