]> jfr.im git - yt-dlp.git/commitdiff
[EmbedThumbnail] Add compat-option `embed-thumbnail-atomicparsley`
authorpukkandan <redacted>
Tue, 15 Jun 2021 09:34:49 +0000 (15:04 +0530)
committerpukkandan <redacted>
Wed, 16 Jun 2021 17:03:32 +0000 (22:33 +0530)
to force use of atomicparsley for embedding thumbnails in mp4

Related: #411

README.md
yt_dlp/YoutubeDL.py
yt_dlp/__init__.py
yt_dlp/postprocessor/embedthumbnail.py

index 849728c0b37299b7dcff01e71da80cacb56abb90..e46edad985d9fd0e8cbd43906cd8522ae8dbc18f 100644 (file)
--- a/README.md
+++ b/README.md
@@ -131,6 +131,7 @@ ### Differences in default behavior
 * Youtube channel URLs are automatically redirected to `/video`. Append a `/featured` to the URL to download only the videos in the home page. If the channel does not have a videos tab, we try to download the equivalent `UU` playlist instead. Also, `/live` URLs raise an error if there are no live videos instead of silently downloading the entire channel. You may use `--compat-options no-youtube-channel-redirect` to revert all these redirections
 * Unavailable videos are also listed for youtube playlists. Use `--compat-options no-youtube-unavailable-videos` to remove this
 * If `ffmpeg` is used as the downloader, the downloading and merging of formats happen in a single step when possible. Use `--compat-options no-direct-merge` to revert this
+* Thumbnail embedding in `mp4` is done with mutagen if possible. Use `--compat-options embed-thumbnail-atomicparsley` to force the use of AtomicParsley instead
 
 For ease of use, a few more compat options are available:
 * `--compat-options all`: Use all compat options
index 6d54b2808fdcc04124da62c785406331481a853c..f60b7eec92867c9da44fe7a22efa6004d69c17d1 100644 (file)
@@ -391,8 +391,9 @@ class YoutubeDL(object):
     compat_opts:       Compatibility options. See "Differences in default behavior".
                        Note that only format-sort, format-spec, no-live-chat,
                        no-attach-info-json, playlist-index, list-formats,
-                       no-direct-merge, no-youtube-channel-redirect,
-                       and no-youtube-unavailable-videos works when used via the API
+                       no-direct-merge, embed-thumbnail-atomicparsley,
+                       no-youtube-unavailable-videos, no-youtube-channel-redirect,
+                       works when used via the API
 
     The following parameters are not used by YoutubeDL itself, they are used by
     the downloader (see yt_dlp/downloader/common.py):
index 6d6b0dd66cf2b19975581bbe00557a00b732a14e..728b3321f9776a79145127f969f9458c50ced08d 100644 (file)
@@ -268,6 +268,7 @@ def parse_compat_opts():
         'filename', 'format-sort', 'abort-on-error', 'format-spec', 'no-playlist-metafiles',
         'multistreams', 'no-live-chat', 'playlist-index', 'list-formats', 'no-direct-merge',
         'no-youtube-channel-redirect', 'no-youtube-unavailable-videos', 'no-attach-info-json',
+        'embed-thumbnail-atomicparsley',
     ]
     compat_opts = parse_compat_opts()
 
index 3ac00b79aefe2c685da659be4c2d82fb304fee28..3427b2cb4d53a20da3397d4a0531f69a242c8b94 100644 (file)
@@ -125,8 +125,9 @@ def run(self, info):
             self.run_ffmpeg(filename, temp_filename, options)
 
         elif info['ext'] in ['m4a', 'mp4', 'mov']:
+            prefer_atomicparsley = 'embed-thumbnail-atomicparsley' in self.get_param('compat_opts', [])
             # Method 1: Use mutagen
-            if not has_mutagen:
+            if not has_mutagen or prefer_atomicparsley:
                 success = False
             else:
                 try:
@@ -145,7 +146,7 @@ def run(self, info):
                     success = False
 
             # Method 2: Use ffmpeg+ffprobe
-            if not success:
+            if not success and not prefer_atomicparsley:
                 success = True
                 try:
                     options = ['-c', 'copy', '-map', '0', '-dn', '-map', '1']