]> jfr.im git - yt-dlp.git/commitdiff
Merge branch 'mkvthumbnail' of https://github.com/MrDoritos/youtube-dl into MrDoritos...
authorTom-Oliver Heidel <redacted>
Sun, 6 Sep 2020 00:43:37 +0000 (02:43 +0200)
committerTom-Oliver Heidel <redacted>
Sun, 6 Sep 2020 00:43:37 +0000 (02:43 +0200)
1  2 
youtube_dlc/postprocessor/embedthumbnail.py

index e2002ab0b1ed84483c47b63ea74e4086fea7230a,4393c4e7a9176ba53a0feca70fc4f1254dbd81d1..e66558ea6fe249bd90d860d818912592be0651e3
@@@ -41,28 -41,6 +41,28 @@@ class EmbedThumbnailPP(FFmpegPostProces
                  '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',
              os.remove(encodeFilename(filename))
              os.rename(encodeFilename(temp_filename), encodeFilename(filename))
  
+         elif info['ext'] == 'mkv':
+             os.rename(encodeFilename(thumbnail_filename), encodeFilename('cover.jpg'))
+             old_thumbnail_filename = thumbnail_filename
+             thumbnail_filename = 'cover.jpg'
+             options = [
+                 '-c', 'copy', '-attach', thumbnail_filename, '-metadata:s:t', 'mimetype=image/jpeg']
+             self._downloader.to_screen('[ffmpeg] Adding thumbnail to "%s"' % filename)
+             self.run_ffmpeg_multiple_files([filename], temp_filename, options)
+             if not self._already_have_thumbnail:
+                 os.remove(encodeFilename(thumbnail_filename))
+             else:
+                 os.rename(encodeFilename(thumbnail_filename), encodeFilename(old_thumbnail_filename))
+             os.remove(encodeFilename(filename))
+             os.rename(encodeFilename(temp_filename), encodeFilename(filename))
          elif info['ext'] in ['m4a', 'mp4']:
              if not check_executable('AtomicParsley', ['-v']):
                  raise EmbedThumbnailPPError('AtomicParsley was not found. Please install.')