mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2024-11-13 20:53:06 +00:00
[embedthumbnail] Embed if any thumbnail was downloaded, not just the best
This commit is contained in:
parent
46953e7e6e
commit
885cc0b75c
@ -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)))
|
||||||
|
@ -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)
|
||||||
|
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user