diff --git a/gallery_dl/extractor/civitai.py b/gallery_dl/extractor/civitai.py index 4d1d6c04..e1eeb66d 100644 --- a/gallery_dl/extractor/civitai.py +++ b/gallery_dl/extractor/civitai.py @@ -389,6 +389,19 @@ class CivitaiSearchExtractor(CivitaiExtractor): return self.api.models(params) +class CivitaiSearchImagesExtractor(CivitaiExtractor): + subcategory = "search-images" + pattern = BASE_PATTERN + r"/search/images\?([^#]+)" + example = "https://civitai.com/search/images?query=QUERY" + + def images(self): + params = self._parse_query(self.groups[0]) + return CivitaiSearchAPI(self).search( + params.get("query"), + params.get("sortBy") or "images_v6", + self.api.nsfw) + + class CivitaiModelsExtractor(CivitaiExtractor): subcategory = "models" pattern = BASE_PATTERN + r"/models(?:/?\?([^#]+))?(?:$|#)" diff --git a/test/results/civitai.py b/test/results/civitai.py index fbacdbf5..08297c90 100644 --- a/test/results/civitai.py +++ b/test/results/civitai.py @@ -361,6 +361,14 @@ __tests__ = ( "#class": civitai.CivitaiSearchExtractor, }, +{ + "#url" : "https://civitai.com/search/images?sortBy=images_v6&query=Voynich", + "#class" : civitai.CivitaiSearchImagesExtractor, + "#options": {"nsfw": False}, + "#count" : range(150, 200), + "#archive": False, +}, + { "#url" : "https://civitai.com/user/waomodder", "#class": civitai.CivitaiUserExtractor,