From 89df37a173048738b025c40772106e56d8d47e89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20F=C3=A4hrmann?= Date: Fri, 11 Jan 2019 12:04:32 +0100 Subject: [PATCH] [artstation] use a separate dict for each asset (#154) Using the same base-dict for each asset of a project causes unwanted side effects like re-using image filename extensions for videos, resulting in errors with the youtube-dl downloader. --- gallery_dl/extractor/artstation.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/gallery_dl/extractor/artstation.py b/gallery_dl/extractor/artstation.py index 34badc07..eee42d07 100644 --- a/gallery_dl/extractor/artstation.py +++ b/gallery_dl/extractor/artstation.py @@ -41,6 +41,7 @@ class ArtstationExtractor(Extractor): player = adict["player_embedded"] url = text.extract(player, 'src="', '"')[0] if not url.startswith(self.root): + text.nameext_from_url(url, asset) yield Message.Url, "ytdl:" + url, asset continue @@ -68,9 +69,13 @@ class ArtstationExtractor(Extractor): assets = data["assets"] del data["assets"] - for asset in assets: - data["asset"] = asset + if len(assets) == 1: + data["asset"] = assets[0] yield data + else: + for asset in assets: + data["asset"] = asset + yield data.copy() def get_user_info(self, username): """Return metadata for a specific user""" @@ -332,13 +337,8 @@ class ArtstationImageExtractor(ArtstationExtractor): self.assets = None def metadata(self): - self.assets = [ - asset.copy() - for asset in ArtstationExtractor.get_project_assets( - self, self.project_id - ) - ] - + self.assets = list(ArtstationExtractor.get_project_assets( + self, self.project_id)) self.user = self.assets[0]["user"]["username"] return ArtstationExtractor.metadata(self)