aboutsummaryrefslogtreecommitdiffstats
path: root/gallery_dl/extractor/koofr.py
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@unit193.net>2026-01-06 04:24:52 -0500
committerLibravatarUnit 193 <unit193@unit193.net>2026-01-06 04:24:52 -0500
commit385e4bfb1e426d23417ac788a6f44d639e226c89 (patch)
treee64f04e19d63014d48e3b5272ce112c637236ba7 /gallery_dl/extractor/koofr.py
parenta24ec1647aeac35a63b744ea856011ad6e06be3b (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.py48
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