mirror of
https://github.com/mikf/gallery-dl.git
synced 2024-11-22 02:32:33 +01:00
- add 'videos' and 'previews' options - fix 403 errors for video previews
This commit is contained in:
parent
982880615d
commit
1a9b9aa310
@ -1124,6 +1124,26 @@ Description
|
||||
Limit the number of posts/projects to download.
|
||||
|
||||
|
||||
extractor.artstation.previews
|
||||
-----------------------------
|
||||
Type
|
||||
``bool``
|
||||
Default
|
||||
``false``
|
||||
Description
|
||||
Download video previews.
|
||||
|
||||
|
||||
extractor.artstation.videos
|
||||
---------------------------
|
||||
Type
|
||||
``bool``
|
||||
Default
|
||||
``true``
|
||||
Description
|
||||
Download video clips.
|
||||
|
||||
|
||||
extractor.artstation.search.pro-first
|
||||
-------------------------------------
|
||||
Type
|
||||
|
@ -29,11 +29,13 @@ class ArtstationExtractor(Extractor):
|
||||
self.user = match.group(1) or match.group(2)
|
||||
|
||||
def items(self):
|
||||
data = self.metadata()
|
||||
|
||||
projects = self.projects()
|
||||
videos = self.config("videos", True)
|
||||
previews = self.config("previews", False)
|
||||
external = self.config("external", False)
|
||||
max_posts = self.config("max-posts")
|
||||
|
||||
data = self.metadata()
|
||||
projects = self.projects()
|
||||
if max_posts:
|
||||
projects = itertools.islice(projects, max_posts)
|
||||
|
||||
@ -45,13 +47,29 @@ class ArtstationExtractor(Extractor):
|
||||
asset["num"] = num
|
||||
yield Message.Directory, asset
|
||||
|
||||
if adict["has_embedded_player"] and external:
|
||||
if adict["has_embedded_player"]:
|
||||
player = adict["player_embedded"]
|
||||
url = (text.extr(player, 'src="', '"') or
|
||||
text.extr(player, "src='", "'"))
|
||||
if url and not url.startswith(self.root):
|
||||
asset["extension"] = None
|
||||
yield Message.Url, "ytdl:" + url, asset
|
||||
if url.startswith(self.root):
|
||||
# video clip hosted on artstation
|
||||
if videos:
|
||||
page = self.request(url).text
|
||||
url = text.extr(page, ' src="', '"')
|
||||
text.nameext_from_url(url, asset)
|
||||
yield Message.Url, url, asset
|
||||
elif url:
|
||||
# external URL
|
||||
if external:
|
||||
asset["extension"] = "mp4"
|
||||
yield Message.Url, "ytdl:" + url, asset
|
||||
else:
|
||||
self.log.debug(player)
|
||||
self.log.warning(
|
||||
"Failed to extract embedded player URL (%s)",
|
||||
adict.get("id"))
|
||||
|
||||
if not previews:
|
||||
continue
|
||||
|
||||
if adict["has_image"]:
|
||||
@ -59,10 +77,11 @@ class ArtstationExtractor(Extractor):
|
||||
text.nameext_from_url(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)
|
||||
if "/video_clips/" not in url:
|
||||
lhs, _, rhs = url.partition("/large/")
|
||||
if rhs:
|
||||
url = lhs + "/4k/" + rhs
|
||||
asset["_fallback"] = self._image_fallback(lhs, rhs)
|
||||
|
||||
yield Message.Url, url, asset
|
||||
|
||||
|
@ -71,14 +71,14 @@ __tests__ = (
|
||||
"#count" : 10,
|
||||
|
||||
"collection": {
|
||||
"active_projects_count": 3,
|
||||
"id" : 2647023,
|
||||
"is_private" : False,
|
||||
"micro_square_image_url": "https://cdna.artstation.com/p/assets/images/images/005/131/434/micro_square/gaeri-kim-cat-front.jpg?1488720625",
|
||||
"name" : "テスト",
|
||||
"projects_count": 3,
|
||||
"small_square_image_url": "https://cdna.artstation.com/p/assets/images/images/005/131/434/small_square/gaeri-kim-cat-front.jpg?1488720625",
|
||||
"user_id" : 697975,
|
||||
"active_projects_count" : 3,
|
||||
"micro_square_image_url": "https://cdna.artstation.com/p/assets/images/images/005/131/434/micro_square/gaeri-kim-cat-front.jpg?1488720625",
|
||||
"small_square_image_url": "https://cdna.artstation.com/p/assets/images/images/005/131/434/small_square/gaeri-kim-cat-front.jpg?1488720625",
|
||||
},
|
||||
"user": "mikf",
|
||||
},
|
||||
@ -92,14 +92,14 @@ __tests__ = (
|
||||
"https://www.artstation.com/mikf/collections/2647719",
|
||||
),
|
||||
|
||||
"active_projects_count": int,
|
||||
"id" : range(2647023, 2647719),
|
||||
"is_private" : False,
|
||||
"micro_square_image_url": str,
|
||||
"name" : r"re:テスト|empty",
|
||||
"projects_count": int,
|
||||
"small_square_image_url": str,
|
||||
"user_id" : 697975,
|
||||
"active_projects_count" : int,
|
||||
"micro_square_image_url": str,
|
||||
"small_square_image_url": str,
|
||||
},
|
||||
|
||||
{
|
||||
@ -156,6 +156,19 @@ __tests__ = (
|
||||
"#count" : 4,
|
||||
},
|
||||
|
||||
{
|
||||
"#url" : "https://www.artstation.com/artwork/lR8b5k",
|
||||
"#comment" : "artstation video clips (#2566)",
|
||||
"#category": ("", "artstation", "image"),
|
||||
"#class" : artstation.ArtstationImageExtractor,
|
||||
"#options" : {"videos": True},
|
||||
"#range" : "2-3",
|
||||
"#urls" : (
|
||||
"https://cdn.artstation.com/p/video_sources/000/819/843/infection-4.mp4",
|
||||
"https://cdn.artstation.com/p/video_sources/000/819/725/infection-veinonly-2.mp4",
|
||||
),
|
||||
},
|
||||
|
||||
{
|
||||
"#url" : "https://www.artstation.com/artwork/g4WPK",
|
||||
"#comment" : "embedded youtube video",
|
||||
|
Loading…
Reference in New Issue
Block a user