diff options
Diffstat (limited to 'gallery_dl/extractor/artstation.py')
| -rw-r--r-- | gallery_dl/extractor/artstation.py | 35 |
1 files changed, 23 insertions, 12 deletions
diff --git a/gallery_dl/extractor/artstation.py b/gallery_dl/extractor/artstation.py index 6914f24..f2ad0ab 100644 --- a/gallery_dl/extractor/artstation.py +++ b/gallery_dl/extractor/artstation.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- -# Copyright 2018-2019 Mike Fährmann +# Copyright 2018-2021 Mike Fährmann # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 as # published by the Free Software Foundation. -"""Extract images from https://www.artstation.com/""" +"""Extractors for https://www.artstation.com/""" from .common import Extractor, Message from .. import text, util, exception @@ -29,7 +29,6 @@ class ArtstationExtractor(Extractor): def items(self): data = self.metadata() - yield Message.Version, 1 yield Message.Directory, data for project in self.projects(): @@ -49,7 +48,20 @@ class ArtstationExtractor(Extractor): if adict["has_image"]: url = adict["image_url"] text.nameext_from_url(url, asset) - yield Message.Url, self._no_cache(url), asset + + url = self._no_cache(url) + lhs, _, rhs = url.partition("/large/") + if rhs: + url = lhs + "/4k/" + rhs + asset["_fallback"] = self._image_fallback(lhs, rhs) + + yield Message.Url, url, asset + + @staticmethod + def _image_fallback(lhs, rhs): + yield lhs + "/large/" + rhs + yield lhs + "/medium/" + rhs + yield lhs + "/small/" + rhs def metadata(self): """Return general metadata""" @@ -135,8 +147,8 @@ class ArtstationUserExtractor(ArtstationExtractor): r"|((?!www)\w+)\.artstation\.com(?:/projects)?)/?$") test = ( ("https://www.artstation.com/gaerikim/", { - "pattern": r"https://\w+\.artstation\.com/p/assets" - r"/images/images/\d+/\d+/\d+/large/[^/]+", + "pattern": r"https://\w+\.artstation\.com/p/assets/images" + r"/images/\d+/\d+/\d+/(4k|large|medium|small)/[^/]+", "count": ">= 6", }), ("https://www.artstation.com/gaerikim/albums/all/"), @@ -202,8 +214,8 @@ class ArtstationLikesExtractor(ArtstationExtractor): r"/(?!artwork|projects|search)([^/?#]+)/likes/?") test = ( ("https://www.artstation.com/mikf/likes", { - "pattern": r"https://\w+\.artstation\.com/p/assets" - r"/images/images/\d+/\d+/\d+/large/[^/]+", + "pattern": r"https://\w+\.artstation\.com/p/assets/images" + r"/images/\d+/\d+/\d+/(4k|large|medium|small)/[^/]+", "count": 6, }), # no likes @@ -250,7 +262,6 @@ class ArtstationChallengeExtractor(ArtstationExtractor): self.root) challenge = self.request(challenge_url).json() - yield Message.Version, 1 yield Message.Directory, {"challenge": challenge} params = {"sorting": self.sorting} @@ -344,10 +355,10 @@ class ArtstationImageExtractor(ArtstationExtractor): test = ( ("https://www.artstation.com/artwork/LQVJr", { "pattern": r"https?://\w+\.artstation\.com/p/assets" - r"/images/images/008/760/279/large/.+", - "content": "1f645ce7634e44675ebde8f6b634d36db0617d3c", + r"/images/images/008/760/279/4k/.+", + "content": "7b113871465fdc09d127adfdc2767d51cf45a7e9", # SHA1 hash without _no_cache() - # "content": "2e8aaf6400aeff2345274f45e90b6ed3f2a0d946", + # "content": "44b80f9af36d40efc5a2668cdd11d36d6793bae9", }), # multiple images per project ("https://www.artstation.com/artwork/Db3dy", { |
