summaryrefslogtreecommitdiffstats
path: root/gallery_dl/extractor/danbooru.py
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@unit193.net>2025-09-23 07:44:37 -0400
committerLibravatarUnit 193 <unit193@unit193.net>2025-09-23 07:44:37 -0400
commit42b62671fabfdcf983a9575221420d85f7fbcac1 (patch)
treefa6b2af249a7216aae5c70a926c6d08be1ac55a6 /gallery_dl/extractor/danbooru.py
parent3b7f8716690b7aa1994a9cb387bbc7215e01a4ed (diff)
New upstream version 1.30.8.upstream/1.30.8
Diffstat (limited to 'gallery_dl/extractor/danbooru.py')
-rw-r--r--gallery_dl/extractor/danbooru.py17
1 files changed, 17 insertions, 0 deletions
diff --git a/gallery_dl/extractor/danbooru.py b/gallery_dl/extractor/danbooru.py
index f8ad07a..29c7763 100644
--- a/gallery_dl/extractor/danbooru.py
+++ b/gallery_dl/extractor/danbooru.py
@@ -278,6 +278,23 @@ class DanbooruTagExtractor(DanbooruExtractor):
return self._pagination("/posts.json", {"tags": self.tags}, prefix)
+class DanbooruRandomExtractor(DanbooruTagExtractor):
+ """Extractor for a random danbooru post"""
+ subcategory = "random"
+ pattern = BASE_PATTERN + r"/posts/random(?:\?(?:[^&#]*&)*tags=([^&#]*))?"
+ example = "https://danbooru.donmai.us/posts/random?tags=TAG"
+
+ def metadata(self):
+ tags = self.groups[-1] or ""
+ self.tags = text.unquote(tags.replace("+", " "))
+ return {"search_tags": self.tags}
+
+ def posts(self):
+ posts = self.request_json(self.root + "/posts/random.json",
+ params={"tags": self.tags or None})
+ return (posts,) if isinstance(posts, dict) else posts
+
+
class DanbooruPoolExtractor(DanbooruExtractor):
"""Extractor for Danbooru pools"""
subcategory = "pool"