summaryrefslogtreecommitdiffstats
path: root/gallery_dl/extractor/artstation.py
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@unit193.net>2023-10-03 18:31:58 -0400
committerLibravatarUnit 193 <unit193@unit193.net>2023-10-03 18:31:58 -0400
commitb8758ecd073910ce3220b2e68399147b425c37b8 (patch)
treed6aee20213508c8f425cbacb3d714367eca904c5 /gallery_dl/extractor/artstation.py
parente2f67519f8c1750a71aab3dc56b8345fff21bac5 (diff)
New upstream version 1.26.0.upstream/1.26.0
Diffstat (limited to 'gallery_dl/extractor/artstation.py')
-rw-r--r--gallery_dl/extractor/artstation.py93
1 files changed, 11 insertions, 82 deletions
diff --git a/gallery_dl/extractor/artstation.py b/gallery_dl/extractor/artstation.py
index a3a7c1e..b58b3d3 100644
--- a/gallery_dl/extractor/artstation.py
+++ b/gallery_dl/extractor/artstation.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
-# Copyright 2018-2022 Mike Fährmann
+# Copyright 2018-2023 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
@@ -27,12 +27,12 @@ class ArtstationExtractor(Extractor):
def __init__(self, match):
Extractor.__init__(self, match)
self.user = match.group(1) or match.group(2)
- self.external = self.config("external", False)
def items(self):
data = self.metadata()
projects = self.projects()
+ external = self.config("external", False)
max_posts = self.config("max-posts")
if max_posts:
projects = itertools.islice(projects, max_posts)
@@ -45,7 +45,7 @@ class ArtstationExtractor(Extractor):
asset["num"] = num
yield Message.Directory, asset
- if adict["has_embedded_player"] and self.external:
+ if adict["has_embedded_player"] and external:
player = adict["player_embedded"]
url = (text.extr(player, 'src="', '"') or
text.extr(player, "src='", "'"))
@@ -117,7 +117,6 @@ class ArtstationExtractor(Extractor):
headers = {
"Accept" : "application/json, text/plain, */*",
"Origin" : self.root,
- "Referer": self.root + "/",
}
if json:
@@ -147,7 +146,6 @@ class ArtstationExtractor(Extractor):
headers = {
"Accept" : "*/*",
"Origin" : self.root,
- "Referer": self.root + "/",
}
return self.request(
url, method="POST", headers=headers, json={},
@@ -178,17 +176,7 @@ class ArtstationUserExtractor(ArtstationExtractor):
pattern = (r"(?:https?://)?(?:(?:www\.)?artstation\.com"
r"/(?!artwork|projects|search)([^/?#]+)(?:/albums/all)?"
r"|((?!www)\w+)\.artstation\.com(?:/projects)?)/?$")
- test = (
- ("https://www.artstation.com/sungchoi/", {
- "pattern": r"https://\w+\.artstation\.com/p/assets/images"
- r"/images/\d+/\d+/\d+/(4k|large|medium|small)/[^/]+",
- "range": "1-10",
- "count": ">= 10",
- }),
- ("https://www.artstation.com/sungchoi/albums/all/"),
- ("https://sungchoi.artstation.com/"),
- ("https://sungchoi.artstation.com/projects/"),
- )
+ example = "https://www.artstation.com/USER"
def projects(self):
url = "{}/users/{}/projects.json".format(self.root, self.user)
@@ -205,15 +193,7 @@ class ArtstationAlbumExtractor(ArtstationExtractor):
pattern = (r"(?:https?://)?(?:(?:www\.)?artstation\.com"
r"/(?!artwork|projects|search)([^/?#]+)"
r"|((?!www)\w+)\.artstation\.com)/albums/(\d+)")
- test = (
- ("https://www.artstation.com/huimeiye/albums/770899", {
- "count": 2,
- }),
- ("https://www.artstation.com/huimeiye/albums/770898", {
- "exception": exception.NotFoundError,
- }),
- ("https://huimeiye.artstation.com/albums/770899"),
- )
+ example = "https://www.artstation.com/USER/albums/12345"
def __init__(self, match):
ArtstationExtractor.__init__(self, match)
@@ -247,17 +227,7 @@ class ArtstationLikesExtractor(ArtstationExtractor):
archive_fmt = "f_{userinfo[id]}_{asset[id]}"
pattern = (r"(?:https?://)?(?:www\.)?artstation\.com"
r"/(?!artwork|projects|search)([^/?#]+)/likes/?")
- test = (
- ("https://www.artstation.com/mikf/likes", {
- "pattern": r"https://\w+\.artstation\.com/p/assets/images"
- r"/images/\d+/\d+/\d+/(4k|large|medium|small)/[^/]+",
- "count": 6,
- }),
- # no likes
- ("https://www.artstation.com/sungchoi/likes", {
- "count": 0,
- }),
- )
+ example = "https://www.artstation.com/USER/likes"
def projects(self):
url = "{}/users/{}/likes.json".format(self.root, self.user)
@@ -274,14 +244,7 @@ class ArtstationChallengeExtractor(ArtstationExtractor):
pattern = (r"(?:https?://)?(?:www\.)?artstation\.com"
r"/contests/[^/?#]+/challenges/(\d+)"
r"/?(?:\?sorting=([a-z]+))?")
- test = (
- ("https://www.artstation.com/contests/thu-2017/challenges/20"),
- (("https://www.artstation.com/contests/beyond-human"
- "/challenges/23?sorting=winners"), {
- "range": "1-30",
- "count": 30,
- }),
- )
+ example = "https://www.artstation.com/contests/NAME/challenges/12345"
def __init__(self, match):
ArtstationExtractor.__init__(self, match)
@@ -327,10 +290,7 @@ class ArtstationSearchExtractor(ArtstationExtractor):
archive_fmt = "s_{search[query]}_{asset[id]}"
pattern = (r"(?:https?://)?(?:\w+\.)?artstation\.com"
r"/search/?\?([^#]+)")
- test = ("https://www.artstation.com/search?query=ancient&sort_by=rank", {
- "range": "1-20",
- "count": 20,
- })
+ example = "https://www.artstation.com/search?query=QUERY"
def __init__(self, match):
ArtstationExtractor.__init__(self, match)
@@ -377,10 +337,7 @@ class ArtstationArtworkExtractor(ArtstationExtractor):
archive_fmt = "A_{asset[id]}"
pattern = (r"(?:https?://)?(?:\w+\.)?artstation\.com"
r"/artwork/?\?([^#]+)")
- test = ("https://www.artstation.com/artwork?sorting=latest", {
- "range": "1-20",
- "count": 20,
- })
+ example = "https://www.artstation.com/artwork?sorting=SORT"
def __init__(self, match):
ArtstationExtractor.__init__(self, match)
@@ -400,32 +357,7 @@ class ArtstationImageExtractor(ArtstationExtractor):
pattern = (r"(?:https?://)?(?:"
r"(?:\w+\.)?artstation\.com/(?:artwork|projects|search)"
r"|artstn\.co/p)/(\w+)")
- test = (
- ("https://www.artstation.com/artwork/LQVJr", {
- "pattern": r"https?://\w+\.artstation\.com/p/assets"
- r"/images/images/008/760/279/4k/.+",
- "content": "7b113871465fdc09d127adfdc2767d51cf45a7e9",
- # SHA1 hash without _no_cache()
- # "content": "44b80f9af36d40efc5a2668cdd11d36d6793bae9",
- }),
- # multiple images per project
- ("https://www.artstation.com/artwork/Db3dy", {
- "count": 4,
- }),
- # embedded youtube video
- ("https://www.artstation.com/artwork/g4WPK", {
- "range": "2",
- "options": (("external", True),),
- "pattern": "ytdl:https://www.youtube.com/embed/JNFfJtwwrU0",
- }),
- # 404 (#3016)
- ("https://www.artstation.com/artwork/3q3mXB", {
- "count": 0,
- }),
- # alternate URL patterns
- ("https://sungchoi.artstation.com/projects/LQVJr"),
- ("https://artstn.co/p/LQVJr"),
- )
+ example = "https://www.artstation.com/artwork/abcde"
def __init__(self, match):
ArtstationExtractor.__init__(self, match)
@@ -453,10 +385,7 @@ class ArtstationFollowingExtractor(ArtstationExtractor):
subcategory = "following"
pattern = (r"(?:https?://)?(?:www\.)?artstation\.com"
r"/(?!artwork|projects|search)([^/?#]+)/following")
- test = ("https://www.artstation.com/sungchoi/following", {
- "pattern": ArtstationUserExtractor.pattern,
- "count": ">= 50",
- })
+ example = "https://www.artstation.com/USER/following"
def items(self):
url = "{}/users/{}/following.json".format(self.root, self.user)