diff options
author | pukkandan <pukkandan.ytdlp@gmail.com> | 2021-05-28 21:45:06 +0530 |
---|---|---|
committer | pukkandan <pukkandan.ytdlp@gmail.com> | 2021-05-29 02:31:13 +0530 |
commit | ae8f99e64856260d97d363233b365a6521167b2b (patch) | |
tree | ba4e25d5700e2de37424ca3ee5cf585cdb8de395 | |
parent | 077c47627682a83c7d13a16ff7eaf6925dd9ff38 (diff) | |
download | hypervideo-pre-ae8f99e64856260d97d363233b365a6521167b2b.tar.lz hypervideo-pre-ae8f99e64856260d97d363233b365a6521167b2b.tar.xz hypervideo-pre-ae8f99e64856260d97d363233b365a6521167b2b.zip |
Remove `None` values from `info.json`
-rw-r--r-- | yt_dlp/YoutubeDL.py | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/yt_dlp/YoutubeDL.py b/yt_dlp/YoutubeDL.py index 3c237212a..aa0a77d15 100644 --- a/yt_dlp/YoutubeDL.py +++ b/yt_dlp/YoutubeDL.py @@ -2777,19 +2777,20 @@ class YoutubeDL(object): @staticmethod def filter_requested_info(info_dict, actually_filter=True): - info_dict.pop('__original_infodict', None) # Always remove this - if not actually_filter: + remove_keys = ['__original_infodict'] # Always remove this since this may contain a copy of the entire dict + keep_keys = ['_type'], # Always keep this to facilitate load-info-json + if actually_filter: + remove_keys += ('requested_formats', 'requested_subtitles', 'requested_entries', 'filepath', 'entries') + empty_values = (None, {}, [], set(), tuple()) + reject = lambda k, v: k not in keep_keys and ( + k.startswith('_') or k in remove_keys or v in empty_values) + else: info_dict['epoch'] = int(time.time()) - return info_dict - exceptions = { - 'remove': ['requested_formats', 'requested_subtitles', 'requested_entries', 'filepath', 'entries'], - 'keep': ['_type'], - } - keep_key = lambda k: k in exceptions['keep'] or not (k.startswith('_') or k in exceptions['remove']) + reject = lambda k, v: k in remove_keys filter_fn = lambda obj: ( - list(map(filter_fn, obj)) if isinstance(obj, (list, tuple)) + list(map(filter_fn, obj)) if isinstance(obj, (list, tuple, set)) else obj if not isinstance(obj, dict) - else dict((k, filter_fn(v)) for k, v in obj.items() if keep_key(k))) + else dict((k, filter_fn(v)) for k, v in obj.items() if not reject(k, v))) return filter_fn(info_dict) def run_pp(self, pp, infodict): |