From e4f0275711cd4917bfe819356533926cd369a621 Mon Sep 17 00:00:00 2001 From: pukkandan Date: Sat, 31 Jul 2021 11:38:39 +0530 Subject: [PATCH] Add compat-option `no-clean-infojson` --- README.md | 3 ++- yt_dlp/YoutubeDL.py | 3 ++- yt_dlp/__init__.py | 5 +++-- yt_dlp/options.py | 2 +- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 7322c2a0a..357362e12 100644 --- a/README.md +++ b/README.md @@ -123,7 +123,7 @@ Some of yt-dlp's default options are different from that of youtube-dl and youtu * The options `--id`, `--auto-number` (`-A`), `--title` (`-t`) and `--literal` (`-l`), no longer work. See [removed options](#Removed) for details * `avconv` is not supported as as an alternative to `ffmpeg` * The default [output template](#output-template) is `%(title)s [%(id)s].%(ext)s`. There is no real reason for this change. This was changed before yt-dlp was ever made public and now there are no plans to change it back to `%(title)s.%(id)s.%(ext)s`. Instead, you may use `--compat-options filename` -* The default [format sorting](sorting-formats) is different from youtube-dl and prefers higher resolution and better codecs rather than higher bitrates. You can use the `--format-sort` option to change this to any order you prefer, or use `--compat-options format-sort` to use youtube-dl's sorting order +* The default [format sorting](#sorting-formats) is different from youtube-dl and prefers higher resolution and better codecs rather than higher bitrates. You can use the `--format-sort` option to change this to any order you prefer, or use `--compat-options format-sort` to use youtube-dl's sorting order * The default format selector is `bv*+ba/b`. This means that if a combined video + audio format that is better than the best video-only format is found, the former will be prefered. Use `-f bv+ba/b` or `--compat-options format-spec` to revert this * Unlike youtube-dlc, yt-dlp does not allow merging multiple audio/video streams into one file by default (since this conflicts with the use of `-f bv*+ba`). If needed, this feature must be enabled using `--audio-multistreams` and `--video-multistreams`. You can also use `--compat-options multistreams` to enable both * `--ignore-errors` is enabled by default. Use `--abort-on-error` or `--compat-options abort-on-error` to abort on errors instead @@ -137,6 +137,7 @@ Some of yt-dlp's default options are different from that of youtube-dl and youtu * 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 +* Some private fields such as filenames are removed by default from the infojson. Use `--no-clean-infojson` or `--compat-options no-clean-infojson` to revert this For ease of use, a few more compat options are available: * `--compat-options all`: Use all compat options diff --git a/yt_dlp/YoutubeDL.py b/yt_dlp/YoutubeDL.py index 6ce0d19c3..697b089a1 100644 --- a/yt_dlp/YoutubeDL.py +++ b/yt_dlp/YoutubeDL.py @@ -403,7 +403,8 @@ class YoutubeDL(object): compat_opts: Compatibility options. See "Differences in default behavior". The following options do not work when used through the API: filename, abort-on-error, multistreams, no-live-chat, - no-playlist-metafiles. Refer __init__.py for their implementation + no-clean-infojson, no-playlist-metafiles. + Refer __init__.py for their implementation The following parameters are not used by YoutubeDL itself, they are used by the downloader (see yt_dlp/downloader/common.py): diff --git a/yt_dlp/__init__.py b/yt_dlp/__init__.py index 5cbc58424..e27b02c78 100644 --- a/yt_dlp/__init__.py +++ b/yt_dlp/__init__.py @@ -280,7 +280,7 @@ def _real_main(argv=None): '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', 'seperate-video-versions', + 'embed-thumbnail-atomicparsley', 'seperate-video-versions', 'no-clean-infojson', ] compat_opts = parse_compat_opts() @@ -291,7 +291,7 @@ def _real_main(argv=None): compat_opts.update(['*%s' % name]) return True - def set_default_compat(compat_name, opt_name, default=True, remove_compat=False): + def set_default_compat(compat_name, opt_name, default=True, remove_compat=True): attr = getattr(opts, opt_name) if compat_name in compat_opts: if attr is None: @@ -307,6 +307,7 @@ def _real_main(argv=None): set_default_compat('abort-on-error', 'ignoreerrors') set_default_compat('no-playlist-metafiles', 'allow_playlist_files') + set_default_compat('no-clean-infojson', 'clean_infojson') if 'format-sort' in compat_opts: opts.format_sort.extend(InfoExtractor.FormatSort.ytdl_default) _video_multistreams_set = set_default_compat('multistreams', 'allow_multiple_video_streams', False, remove_compat=False) diff --git a/yt_dlp/options.py b/yt_dlp/options.py index 9b71427d1..955f610e6 100644 --- a/yt_dlp/options.py +++ b/yt_dlp/options.py @@ -1062,7 +1062,7 @@ def parseOpts(overrideArguments=None): help='Do not write playlist metadata when using --write-info-json, --write-description etc.') filesystem.add_option( '--clean-infojson', - action='store_true', dest='clean_infojson', default=True, + action='store_true', dest='clean_infojson', default=None, help=( 'Remove some private fields such as filenames from the infojson. ' 'Note that it could still contain some personal information (default)'))