]> jfr.im git - yt-dlp.git/commitdiff
[MKV Thumbnail Support] Now has the correct file name in MKV container
authorian <redacted>
Fri, 20 Mar 2020 21:50:50 +0000 (17:50 -0400)
committerian <redacted>
Fri, 20 Mar 2020 21:50:50 +0000 (17:50 -0400)
youtube_dl/postprocessor/embedthumbnail.py

index 56be914b8f1b6e98802163ae1013392079d93fb3..4393c4e7a9176ba53a0feca70fc4f1254dbd81d1 100644 (file)
@@ -55,6 +55,25 @@ def run(self, info):
             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.')