diff options
| author | 2025-10-07 02:11:45 -0400 | |
|---|---|---|
| committer | 2025-10-07 02:11:45 -0400 | |
| commit | bbe7fac03d881662a458e7fbf870c9d71f5257f4 (patch) | |
| tree | b90b8974242d7fcb381e43c69c215c97c2e99197 /gallery_dl/extractor/schalenetwork.py | |
| parent | 42b62671fabfdcf983a9575221420d85f7fbcac1 (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.py | 57 |
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 |
