aboutsummaryrefslogtreecommitdiffstats
path: root/gallery_dl/extractor/danbooru.py
diff options
context:
space:
mode:
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"