[embedthumbnail] Embed if any thumbnail was downloaded, not just the best

This commit is contained in:
pukkandan 2021-05-29 01:38:02 +05:30
parent 46953e7e6e
commit 885cc0b75c
No known key found for this signature in database
GPG Key ID: 0F00D95A001F4698
3 changed files with 11 additions and 6 deletions

View File

@ -3232,7 +3232,7 @@ class YoutubeDL(object):
thumb_ext = determine_ext(t['url'], 'jpg') thumb_ext = determine_ext(t['url'], 'jpg')
suffix = '%s.' % t['id'] if multiple else '' suffix = '%s.' % t['id'] if multiple else ''
thumb_display_id = '%s ' % t['id'] if multiple else '' thumb_display_id = '%s ' % t['id'] if multiple else ''
t['filepath'] = thumb_filename = replace_extension(filename, suffix + thumb_ext, info_dict.get('ext')) thumb_filename = replace_extension(filename, suffix + thumb_ext, info_dict.get('ext'))
if not self.params.get('overwrites', True) and os.path.exists(encodeFilename(thumb_filename)): if not self.params.get('overwrites', True) and os.path.exists(encodeFilename(thumb_filename)):
ret.append(suffix + thumb_ext) ret.append(suffix + thumb_ext)
@ -3248,6 +3248,7 @@ class YoutubeDL(object):
ret.append(suffix + thumb_ext) ret.append(suffix + thumb_ext)
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))
t['filepath'] = thumb_filename
except network_exceptions as err: except network_exceptions 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)))

View File

@ -100,7 +100,7 @@ class PostProcessor(object):
else: else:
use_compat = False use_compat = False
return cli_configuration_args( return cli_configuration_args(
self._downloader.params.get('postprocessor_args'), self.get_param('postprocessor_args'),
keys, default, use_compat) keys, default, use_compat)

View File

@ -70,16 +70,20 @@ class EmbedThumbnailPP(FFmpegPostProcessor):
self.to_screen('There aren\'t any thumbnails to embed') self.to_screen('There aren\'t any thumbnails to embed')
return [], info return [], info
thumbnail_filename = info['thumbnails'][-1]['filepath'] idx = next((-(i+1) for i, t in enumerate(info['thumbnails'][::-1]) if t.get('filepath')), None)
if idx is None:
self.to_screen('There are no thumbnails on disk')
return [], info
thumbnail_filename = info['thumbnails'][idx]['filepath']
if not os.path.exists(encodeFilename(thumbnail_filename)): if not os.path.exists(encodeFilename(thumbnail_filename)):
self.report_warning('Skipping embedding the thumbnail because the file is missing.') self.report_warning('Skipping embedding the thumbnail because the file is missing.')
return [], info return [], info
# Correct extension for WebP file with wrong extension (see #25687, #25717) # Correct extension for WebP file with wrong extension (see #25687, #25717)
convertor = FFmpegThumbnailsConvertorPP(self._downloader) convertor = FFmpegThumbnailsConvertorPP(self._downloader)
convertor.fixup_webp(info, -1) convertor.fixup_webp(info, idx)
original_thumbnail = thumbnail_filename = info['thumbnails'][-1]['filepath'] original_thumbnail = thumbnail_filename = info['thumbnails'][idx]['filepath']
# Convert unsupported thumbnail formats to PNG (see #25687, #25717) # Convert unsupported thumbnail formats to PNG (see #25687, #25717)
# Original behavior was to convert to JPG, but since JPG is a lossy # Original behavior was to convert to JPG, but since JPG is a lossy
@ -199,7 +203,7 @@ class EmbedThumbnailPP(FFmpegPostProcessor):
with open(thumbnail_filename, 'rb') as thumbfile: with open(thumbnail_filename, 'rb') as thumbfile:
pic.data = thumbfile.read() pic.data = thumbfile.read()
pic.type = 3 # front cover pic.type = 3 # front cover
res = self._get_thumbnail_resolution(thumbnail_filename, info['thumbnails'][-1]) res = self._get_thumbnail_resolution(thumbnail_filename, info['thumbnails'][idx])
if res is not None: if res is not None:
pic.width, pic.height = res pic.width, pic.height = res