diff options
| author | Alex Merkel <mail@alexmerkel.com> | 2020-06-18 22:36:44 +0200 | 
|---|---|---|
| committer | Sergey M․ <dstftw@gmail.com> | 2020-09-14 03:10:01 +0700 | 
| commit | a31a022efd1b7bac8cd0a477f08534f3fcc67298 (patch) | |
| tree | 575d8e975fd0a2e6c6219cda198d9533b6d02ff3 | |
| parent | 45f6362464d283fe61653c75fbb93a6a87ac6f65 (diff) | |
[postprocessor/embedthumbnail] Add support for non jpeg/png thumbnails (closes #25687)
| -rw-r--r-- | youtube_dl/postprocessor/embedthumbnail.py | 22 | 
1 files changed, 22 insertions, 0 deletions
diff --git a/youtube_dl/postprocessor/embedthumbnail.py b/youtube_dl/postprocessor/embedthumbnail.py index 56be914b8..e2002ab0b 100644 --- a/youtube_dl/postprocessor/embedthumbnail.py +++ b/youtube_dl/postprocessor/embedthumbnail.py @@ -41,6 +41,28 @@ class EmbedThumbnailPP(FFmpegPostProcessor):                  'Skipping embedding the thumbnail because the file is missing.')              return [], info +        # Check for mislabeled webp file +        with open(encodeFilename(thumbnail_filename), "rb") as f: +            b = f.read(16) +        if b'\x57\x45\x42\x50' in b:  # Binary for WEBP +            [thumbnail_filename_path, thumbnail_filename_extension] = os.path.splitext(thumbnail_filename) +            if not thumbnail_filename_extension == ".webp": +                webp_thumbnail_filename = thumbnail_filename_path + ".webp" +                os.rename(encodeFilename(thumbnail_filename), encodeFilename(webp_thumbnail_filename)) +                thumbnail_filename = webp_thumbnail_filename + +        # If not a jpg or png thumbnail, convert it to jpg using ffmpeg +        if not os.path.splitext(thumbnail_filename)[1].lower() in ['.jpg', '.png']: +            jpg_thumbnail_filename = os.path.splitext(thumbnail_filename)[0] + ".jpg" +            jpg_thumbnail_filename = os.path.join(os.path.dirname(jpg_thumbnail_filename), os.path.basename(jpg_thumbnail_filename).replace('%', '_'))  # ffmpeg interprets % as image sequence + +            self._downloader.to_screen('[ffmpeg] Converting thumbnail "%s" to JPEG' % thumbnail_filename) + +            self.run_ffmpeg(thumbnail_filename, jpg_thumbnail_filename, ['-bsf:v', 'mjpeg2jpeg']) + +            os.remove(encodeFilename(thumbnail_filename)) +            thumbnail_filename = jpg_thumbnail_filename +          if info['ext'] == 'mp3':              options = [                  '-c', 'copy', '-map', '0', '-map', '1',  | 
