]> jfr.im git - yt-dlp.git/commitdiff
[embedthumbnail] Embed if any thumbnail was downloaded, not just the best
authorpukkandan <redacted>
Fri, 28 May 2021 20:08:02 +0000 (01:38 +0530)
committerpukkandan <redacted>
Fri, 28 May 2021 21:01:14 +0000 (02:31 +0530)
yt_dlp/YoutubeDL.py
yt_dlp/postprocessor/common.py
yt_dlp/postprocessor/embedthumbnail.py

index aa0a77d15d68e00bfbfc78671006a8baee434aed..b67da9f08d4e5849dfe0a90ba62302f1ad9b58eb 100644 (file)
@@ -3232,7 +3232,7 @@ def _write_thumbnails(self, info_dict, filename):  # return the extensions
             thumb_ext = determine_ext(t['url'], 'jpg')
             suffix = '%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)):
                 ret.append(suffix + thumb_ext)
@@ -3248,6 +3248,7 @@ def _write_thumbnails(self, info_dict, filename):  # return the extensions
                     ret.append(suffix + thumb_ext)
                     self.to_screen('[%s] %s: Writing thumbnail %sto: %s' %
                                    (info_dict['extractor'], info_dict['id'], thumb_display_id, thumb_filename))
+                    t['filepath'] = thumb_filename
                 except network_exceptions as err:
                     self.report_warning('Unable to download thumbnail "%s": %s' %
                                         (t['url'], error_to_compat_str(err)))
index b01ba5ee02c2ba809dfec7cba5fdbd02c411ee37..b6d06f33fad0c43906f0d857c6a9c8a8e2aed248 100644 (file)
@@ -100,7 +100,7 @@ def _configuration_args(self, exe, keys=None, default=[], use_compat=True):
         else:
             use_compat = False
         return cli_configuration_args(
-            self._downloader.params.get('postprocessor_args'),
+            self.get_param('postprocessor_args'),
             keys, default, use_compat)
 
 
index 2d736a31a3dba597105c72d262e93b92b3ee2317..f3eb7d96d50610ee4905497d7af370a30ddc4a94 100644 (file)
@@ -70,16 +70,20 @@ def run(self, info):
             self.to_screen('There aren\'t any thumbnails to embed')
             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)):
             self.report_warning('Skipping embedding the thumbnail because the file is missing.')
             return [], info
 
         # Correct extension for WebP file with wrong extension (see #25687, #25717)
         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)
         # Original behavior was to convert to JPG, but since JPG is a lossy
@@ -199,7 +203,7 @@ def run(self, info):
             with open(thumbnail_filename, 'rb') as thumbfile:
                 pic.data = thumbfile.read()
             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:
                 pic.width, pic.height = res