diff --git a/docs/supportedsites.rst b/docs/supportedsites.rst index ef24fe43..73ae6706 100644 --- a/docs/supportedsites.rst +++ b/docs/supportedsites.rst @@ -104,7 +104,7 @@ Turboimagehost https://www.turboimagehost.com/ individual Images ==================== =================================== ================================================== ================ .. |Site-0| replace:: yuki.la 4chan archive -.. |Capabilities-0| replace:: Images from Users, Albums, Challenges, individual Images, Likes, Search Results +.. |Capabilities-0| replace:: Images from Users, Albums, Artwork Listings, Challenges, individual Images, Likes, Search Results .. |Capabilities-1| replace:: Collections, Deviations, Favorites, Folders, Galleries, Journals, Popular Images, Sta.sh .. |Capabilities-2| replace:: Images from Users, Albums, Favorites, Galleries, Groups, individual Images, Search Results .. |Capabilities-3| replace:: Images from Users, Favorites, individual Images, Popular Images, Recent Images, Scraps diff --git a/gallery_dl/extractor/artstation.py b/gallery_dl/extractor/artstation.py index 9dab0c05..fbd587fa 100644 --- a/gallery_dl/extractor/artstation.py +++ b/gallery_dl/extractor/artstation.py @@ -300,6 +300,29 @@ class ArtstationSearchExtractor(ArtstationExtractor): return self._pagination(url, params) +class ArtstationArtworkExtractor(ArtstationExtractor): + """Extractor for projects on artstation's artwork page""" + subcategory = "artwork" + directory_fmt = ("{category}", "Artworks", "{artwork[sorting]!c}") + archive_fmt = "A_{asset[id]}" + pattern = (r"(?:https?://)?(?:\w+\.)?artstation\.com" + r"/artwork/?\?([^#]+)") + test = ("https://www.artstation.com/artwork?sorting=latest",) + + def __init__(self, match): + ArtstationExtractor.__init__(self, match) + self.query = text.parse_query(match.group(1)) + + def metadata(self): + return {"artwork": self.query} + + def projects(self): + url = "{}/projects.json".format(self.root) + params = self.query.copy() + params["page"] = 1 + return self._pagination(url, params) + + class ArtstationImageExtractor(ArtstationExtractor): """Extractor for images from a single artstation project""" subcategory = "image"