adds fallback behavior for --write-thumbnail opt

`_write_thumbnails` falls back on lower quality thumbnails as retrieval of higher quality thumbnails fail. assumes thumbnails are sorted from lowest to highest quality before and after commit.
This commit is contained in:
pkfm 2021-01-31 10:31:07 -08:00
commit 38b3978195

View file

@ -2422,10 +2422,11 @@ class YoutubeDL(object):
def _write_thumbnails(self, info_dict, filename): def _write_thumbnails(self, info_dict, filename):
if self.params.get('writethumbnail', False): if self.params.get('writethumbnail', False):
thumbnails = info_dict.get('thumbnails') thumbnails = info_dict.get('thumbnails')
if thumbnails: thumbnails.reverse()
thumbnails = [thumbnails[-1]] getFirst = True
elif self.params.get('write_all_thumbnails', False): elif self.params.get('write_all_thumbnails', False):
thumbnails = info_dict.get('thumbnails') thumbnails = info_dict.get('thumbnails')
getFirst = False
else: else:
return return
@ -2451,6 +2452,8 @@ class YoutubeDL(object):
shutil.copyfileobj(uf, thumbf) shutil.copyfileobj(uf, thumbf)
self.to_screen('[%s] %s: Writing thumbnail %sto: %s' % self.to_screen('[%s] %s: Writing thumbnail %sto: %s' %
(info_dict['extractor'], info_dict['id'], thumb_display_id, thumb_filename)) (info_dict['extractor'], info_dict['id'], thumb_display_id, thumb_filename))
if getFirst:
break
except (compat_urllib_error.URLError, compat_http_client.HTTPException, socket.error) as err: except (compat_urllib_error.URLError, compat_http_client.HTTPException, socket.error) as err:
self.report_warning('Unable to download thumbnail "%s": %s' % self.report_warning('Unable to download thumbnail "%s": %s' %
(t['url'], error_to_compat_str(err))) (t['url'], error_to_compat_str(err)))