diff options
Diffstat (limited to 'gallery_dl/extractor/danbooru.py')
| -rw-r--r-- | gallery_dl/extractor/danbooru.py | 17 |
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" |
