[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.
This commit is contained in:
Mike Fährmann
2019-01-11 12:04:32 +01:00
parent 344bbaa71a
commit 89df37a173

View File

@@ -41,6 +41,7 @@ class ArtstationExtractor(Extractor):
player = adict["player_embedded"] player = adict["player_embedded"]
url = text.extract(player, 'src="', '"')[0] url = text.extract(player, 'src="', '"')[0]
if not url.startswith(self.root): if not url.startswith(self.root):
text.nameext_from_url(url, asset)
yield Message.Url, "ytdl:" + url, asset yield Message.Url, "ytdl:" + url, asset
continue continue
@@ -68,9 +69,13 @@ class ArtstationExtractor(Extractor):
assets = data["assets"] assets = data["assets"]
del data["assets"] del data["assets"]
for asset in assets: if len(assets) == 1:
data["asset"] = asset data["asset"] = assets[0]
yield data yield data
else:
for asset in assets:
data["asset"] = asset
yield data.copy()
def get_user_info(self, username): def get_user_info(self, username):
"""Return metadata for a specific user""" """Return metadata for a specific user"""
@@ -332,13 +337,8 @@ class ArtstationImageExtractor(ArtstationExtractor):
self.assets = None self.assets = None
def metadata(self): def metadata(self):
self.assets = [ self.assets = list(ArtstationExtractor.get_project_assets(
asset.copy() self, self.project_id))
for asset in ArtstationExtractor.get_project_assets(
self, self.project_id
)
]
self.user = self.assets[0]["user"]["username"] self.user = self.assets[0]["user"]["username"]
return ArtstationExtractor.metadata(self) return ArtstationExtractor.metadata(self)