[artstation] download '/8k/' images (#9003)

This commit is contained in:
Mike Fährmann
2026-02-05 16:45:55 +01:00
parent fdc59efdda
commit 04442e262e
2 changed files with 11 additions and 33 deletions

View File

@@ -64,7 +64,7 @@ class ArtstationExtractor(Extractor):
if "/images/images/" in url: if "/images/images/" in url:
lhs, _, rhs = url.partition("/large/") lhs, _, rhs = url.partition("/large/")
if rhs: if rhs:
url = f"{lhs}/4k/{rhs}" url = f"{lhs}/8k/{rhs}"
asset["_fallback"] = self._image_fallback(lhs, rhs) asset["_fallback"] = self._image_fallback(lhs, rhs)
yield Message.Url, url, asset yield Message.Url, url, asset
@@ -103,6 +103,7 @@ class ArtstationExtractor(Extractor):
adict.get("id")) adict.get("id"))
def _image_fallback(self, lhs, rhs): def _image_fallback(self, lhs, rhs):
yield f"{lhs}/4k/{rhs}"
yield f"{lhs}/large/{rhs}" yield f"{lhs}/large/{rhs}"
yield f"{lhs}/medium/{rhs}" yield f"{lhs}/medium/{rhs}"
yield f"{lhs}/small/{rhs}" yield f"{lhs}/small/{rhs}"

View File

@@ -5,68 +5,62 @@
# published by the Free Software Foundation. # published by the Free Software Foundation.
from gallery_dl.extractor import artstation from gallery_dl.extractor import artstation
from gallery_dl import exception
__tests__ = ( __tests__ = (
{ {
"#url" : "https://www.artstation.com/sungchoi/", "#url" : "https://www.artstation.com/sungchoi/",
"#category": ("", "artstation", "user"),
"#class" : artstation.ArtstationUserExtractor, "#class" : artstation.ArtstationUserExtractor,
"#pattern" : r"https://\w+\.artstation\.com/p/assets/images/images/\d+/\d+/\d+/(4k|large|medium|small)/[^/]+", "#pattern" : r"https://\w+\.artstation\.com/p/assets/images/images/\d+/\d+/\d+/8k/[^/]+",
"#range" : "1-10", "#range" : "1-10",
"#count" : ">= 10", "#count" : ">= 10",
}, },
{ {
"#url" : "https://www.artstation.com/sungchoi/albums/all/", "#url" : "https://www.artstation.com/sungchoi/albums/all/",
"#category": ("", "artstation", "user"),
"#class" : artstation.ArtstationUserExtractor, "#class" : artstation.ArtstationUserExtractor,
}, },
{ {
"#url" : "https://sungchoi.artstation.com/", "#url" : "https://sungchoi.artstation.com/",
"#category": ("", "artstation", "user"),
"#class" : artstation.ArtstationUserExtractor, "#class" : artstation.ArtstationUserExtractor,
}, },
{ {
"#url" : "https://sungchoi.artstation.com/projects/", "#url" : "https://sungchoi.artstation.com/projects/",
"#category": ("", "artstation", "user"), "#comment" : "alternate user URL format",
"#class" : artstation.ArtstationUserExtractor, "#class" : artstation.ArtstationUserExtractor,
}, },
{ {
"#url" : "https://www.artstation.com/huimeiye/albums/770899", "#url" : "https://www.artstation.com/huimeiye/albums/770899",
"#category": ("", "artstation", "album"), "#comment" : "'Hellboy' album",
"#class" : artstation.ArtstationAlbumExtractor, "#class" : artstation.ArtstationAlbumExtractor,
"#count" : 2, "#count" : 2,
}, },
{ {
"#url" : "https://www.artstation.com/huimeiye/albums/770898", "#url" : "https://www.artstation.com/huimeiye/albums/770898",
"#category": ("", "artstation", "album"), "#comment" : "non-existent album",
"#class" : artstation.ArtstationAlbumExtractor, "#class" : artstation.ArtstationAlbumExtractor,
"#exception": exception.NotFoundError, "#exception": "NotFoundError",
}, },
{ {
"#url" : "https://huimeiye.artstation.com/albums/770899", "#url" : "https://huimeiye.artstation.com/albums/770899",
"#category": ("", "artstation", "album"), "#comment" : "alternate user URL format",
"#class" : artstation.ArtstationAlbumExtractor, "#class" : artstation.ArtstationAlbumExtractor,
}, },
{ {
"#url" : "https://www.artstation.com/mikf/likes", "#url" : "https://www.artstation.com/mikf/likes",
"#category": ("", "artstation", "likes"),
"#class" : artstation.ArtstationLikesExtractor, "#class" : artstation.ArtstationLikesExtractor,
"#pattern" : r"https://\w+\.artstation\.com/p/assets/images/images/\d+/\d+/\d+/(4k|large|medium|small)/[^/]+", "#pattern" : r"https://\w+\.artstation\.com/p/assets/images/images/\d+/\d+/\d+/8k/[^/]+",
"#count" : 6, "#count" : 6,
}, },
{ {
"#url" : "https://www.artstation.com/mikf/collections/2647023", "#url" : "https://www.artstation.com/mikf/collections/2647023",
"#category": ("", "artstation", "collection"),
"#class" : artstation.ArtstationCollectionExtractor, "#class" : artstation.ArtstationCollectionExtractor,
"#count" : 10, "#count" : 10,
@@ -85,7 +79,6 @@ __tests__ = (
{ {
"#url" : "https://www.artstation.com/mikf/collections", "#url" : "https://www.artstation.com/mikf/collections",
"#category": ("", "artstation", "collections"),
"#class" : artstation.ArtstationCollectionsExtractor, "#class" : artstation.ArtstationCollectionsExtractor,
"#results" : ( "#results" : (
"https://www.artstation.com/mikf/collections/2647023", "https://www.artstation.com/mikf/collections/2647023",
@@ -105,20 +98,17 @@ __tests__ = (
{ {
"#url" : "https://www.artstation.com/sungchoi/likes", "#url" : "https://www.artstation.com/sungchoi/likes",
"#comment" : "no likes", "#comment" : "no likes",
"#category": ("", "artstation", "likes"),
"#class" : artstation.ArtstationLikesExtractor, "#class" : artstation.ArtstationLikesExtractor,
"#count" : 0, "#count" : 0,
}, },
{ {
"#url" : "https://www.artstation.com/contests/thu-2017/challenges/20", "#url" : "https://www.artstation.com/contests/thu-2017/challenges/20",
"#category": ("", "artstation", "challenge"),
"#class" : artstation.ArtstationChallengeExtractor, "#class" : artstation.ArtstationChallengeExtractor,
}, },
{ {
"#url" : "https://www.artstation.com/contests/beyond-human/challenges/23?sorting=winners", "#url" : "https://www.artstation.com/contests/beyond-human/challenges/23?sorting=winners",
"#category": ("", "artstation", "challenge"),
"#class" : artstation.ArtstationChallengeExtractor, "#class" : artstation.ArtstationChallengeExtractor,
"#range" : "1-30", "#range" : "1-30",
"#count" : 30, "#count" : 30,
@@ -126,7 +116,6 @@ __tests__ = (
{ {
"#url" : "https://www.artstation.com/search?query=ancient&sort_by=rank", "#url" : "https://www.artstation.com/search?query=ancient&sort_by=rank",
"#category": ("", "artstation", "search"),
"#class" : artstation.ArtstationSearchExtractor, "#class" : artstation.ArtstationSearchExtractor,
"#range" : "1-20", "#range" : "1-20",
"#count" : 20, "#count" : 20,
@@ -134,7 +123,6 @@ __tests__ = (
{ {
"#url" : "https://www.artstation.com/artwork?sorting=latest", "#url" : "https://www.artstation.com/artwork?sorting=latest",
"#category": ("", "artstation", "artwork"),
"#class" : artstation.ArtstationArtworkExtractor, "#class" : artstation.ArtstationArtworkExtractor,
"#range" : "1-20", "#range" : "1-20",
"#count" : 20, "#count" : 20,
@@ -142,16 +130,14 @@ __tests__ = (
{ {
"#url" : "https://www.artstation.com/artwork/LQVJr", "#url" : "https://www.artstation.com/artwork/LQVJr",
"#category": ("", "artstation", "image"),
"#class" : artstation.ArtstationImageExtractor, "#class" : artstation.ArtstationImageExtractor,
"#pattern" : r"https?://\w+\.artstation\.com/p/assets/images/images/008/760/279/4k/.+", "#pattern" : r"https?://\w+\.artstation\.com/p/assets/images/images/008/760/279/8k/.+",
"#sha1_content": "3f211ce0d6ecdb502db2cdf7bbeceb11d8421170", "#sha1_content": "3f211ce0d6ecdb502db2cdf7bbeceb11d8421170",
}, },
{ {
"#url" : "https://www.artstation.com/artwork/Db3dy", "#url" : "https://www.artstation.com/artwork/Db3dy",
"#comment" : "multiple images per project", "#comment" : "multiple images per project",
"#category": ("", "artstation", "image"),
"#class" : artstation.ArtstationImageExtractor, "#class" : artstation.ArtstationImageExtractor,
"#count" : 4, "#count" : 4,
}, },
@@ -159,7 +145,6 @@ __tests__ = (
{ {
"#url" : "https://www.artstation.com/artwork/lR8b5k", "#url" : "https://www.artstation.com/artwork/lR8b5k",
"#comment" : "artstation video clips (#2566)", "#comment" : "artstation video clips (#2566)",
"#category": ("", "artstation", "image"),
"#class" : artstation.ArtstationImageExtractor, "#class" : artstation.ArtstationImageExtractor,
"#options" : {"videos": True}, "#options" : {"videos": True},
"#range" : "2-3", "#range" : "2-3",
@@ -185,7 +170,6 @@ __tests__ = (
{ {
"#url" : "https://www.artstation.com/artwork/g4WPK", "#url" : "https://www.artstation.com/artwork/g4WPK",
"#comment" : "embedded youtube video", "#comment" : "embedded youtube video",
"#category": ("", "artstation", "image"),
"#class" : artstation.ArtstationImageExtractor, "#class" : artstation.ArtstationImageExtractor,
"#options" : {"external": True}, "#options" : {"external": True},
"#pattern" : r"ytdl:https://www\.youtube(-nocookie)?\.com/embed/JNFfJtwwrU0", "#pattern" : r"ytdl:https://www\.youtube(-nocookie)?\.com/embed/JNFfJtwwrU0",
@@ -195,27 +179,23 @@ __tests__ = (
{ {
"#url" : "https://www.artstation.com/artwork/3q3mXB", "#url" : "https://www.artstation.com/artwork/3q3mXB",
"#comment" : "404 (#3016)", "#comment" : "404 (#3016)",
"#category": ("", "artstation", "image"),
"#class" : artstation.ArtstationImageExtractor, "#class" : artstation.ArtstationImageExtractor,
"#count" : 0, "#exception": "NotFoundError",
}, },
{ {
"#url" : "https://sungchoi.artstation.com/projects/LQVJr", "#url" : "https://sungchoi.artstation.com/projects/LQVJr",
"#comment" : "alternate URL patterns", "#comment" : "alternate URL patterns",
"#category": ("", "artstation", "image"),
"#class" : artstation.ArtstationImageExtractor, "#class" : artstation.ArtstationImageExtractor,
}, },
{ {
"#url" : "https://artstn.co/p/LQVJr", "#url" : "https://artstn.co/p/LQVJr",
"#category": ("", "artstation", "image"),
"#class" : artstation.ArtstationImageExtractor, "#class" : artstation.ArtstationImageExtractor,
}, },
{ {
"#url" : "https://www.artstation.com/sungchoi/following", "#url" : "https://www.artstation.com/sungchoi/following",
"#category": ("", "artstation", "following"),
"#class" : artstation.ArtstationFollowingExtractor, "#class" : artstation.ArtstationFollowingExtractor,
"#pattern" : artstation.ArtstationUserExtractor.pattern, "#pattern" : artstation.ArtstationUserExtractor.pattern,
"#count" : ">= 40", "#count" : ">= 40",
@@ -224,21 +204,18 @@ __tests__ = (
{ {
"#url" : "https://fede-x-rojas.artstation.com/projects/WBdaZy", "#url" : "https://fede-x-rojas.artstation.com/projects/WBdaZy",
"#comment" : "dash in username", "#comment" : "dash in username",
"#category": ("", "artstation", "image"),
"#class" : artstation.ArtstationImageExtractor, "#class" : artstation.ArtstationImageExtractor,
}, },
{ {
"#url" : "https://fede-x-rojas.artstation.com/albums/8533110", "#url" : "https://fede-x-rojas.artstation.com/albums/8533110",
"#comment" : "dash in username", "#comment" : "dash in username",
"#category": ("", "artstation", "album"),
"#class" : artstation.ArtstationAlbumExtractor, "#class" : artstation.ArtstationAlbumExtractor,
}, },
{ {
"#url" : "https://fede-x-rojas.artstation.com/", "#url" : "https://fede-x-rojas.artstation.com/",
"#comment" : "dash in username", "#comment" : "dash in username",
"#category": ("", "artstation", "user"),
"#class" : artstation.ArtstationUserExtractor, "#class" : artstation.ArtstationUserExtractor,
}, },