diff options
| author | 2026-01-06 04:24:52 -0500 | |
|---|---|---|
| committer | 2026-01-06 04:24:52 -0500 | |
| commit | 385e4bfb1e426d23417ac788a6f44d639e226c89 (patch) | |
| tree | e64f04e19d63014d48e3b5272ce112c637236ba7 /gallery_dl/extractor/koofr.py | |
| parent | a24ec1647aeac35a63b744ea856011ad6e06be3b (diff) | |
New upstream version 1.31.2.upstream/1.31.2upstream
Diffstat (limited to 'gallery_dl/extractor/koofr.py')
| -rw-r--r-- | gallery_dl/extractor/koofr.py | 48 |
1 files changed, 40 insertions, 8 deletions
diff --git a/gallery_dl/extractor/koofr.py b/gallery_dl/extractor/koofr.py index 9ebc133..08a737c 100644 --- a/gallery_dl/extractor/koofr.py +++ b/gallery_dl/extractor/koofr.py @@ -17,6 +17,8 @@ class KoofrSharedExtractor(Extractor): category = "koofr" subcategory = "shared" root = "https://app.koofr.net" + directory_fmt = ("{category}", "{date:%Y-%m-%d} {title}") + archive_fmt = "{post[id]}_{hash|id}" pattern = (r"(?:https?://)?(?:" r"(?:app\.)?koofr\.(?:net|eu)/links/([\w-]+)|" r"k00\.fr/(\w+))") @@ -41,15 +43,45 @@ class KoofrSharedExtractor(Extractor): "Sec-Fetch-Site" : "same-origin", } data = self.request_json(url, params=params, headers=headers) + root = data.get("publicUrlBase") or self.root + base = f"{root}/content/links/{uuid}/files/get/" + headers = {"Referer": referer} + file = data["file"] - name = data["name"] - file = text.nameext_from_name(name, data["file"]) - file["_http_headers"] = {"Referer": referer} + if file["type"] == "dir" and not self.config("zip", False): + path = True + url = url + "/bundle" + params["path"] = "/" + files = self.request_json( + url, params=params, headers=headers)["files"] + else: + path = False + files = (file,) - root = data.get("publicUrlBase") or self.root - url = f"{root}/content/links/{uuid}/files/get/{name}?path=/&force=" if password: - url = f"{url}&password={password}" + password = text.escape(password) + + post = { + "id" : data["id"], + "title": data["name"], + "count": len(files), + "date" : self.parse_timestamp(file["modified"] / 1000), + } + + yield Message.Directory, "", post + for num, file in enumerate(files, 1): + file["count"] = len(files) + file["num"] = num + file["post"] = post + file["date"] = self.parse_timestamp(file["modified"] / 1000) + file["_http_headers"] = headers + + name = file["name"] + text.nameext_from_name(name, file) + + name = text.escape(name) + url = (f"{base}{name}?path=%2F{name if path else '&force'}") + if password: + url = f"{url}&password={password}" - yield Message.Directory, "", file - yield Message.Url, url, file + yield Message.Url, url, file |
