|
|
@ -30,9 +30,12 @@ from string import ascii_letters
|
|
|
|
from .compat import (
|
|
|
|
from .compat import (
|
|
|
|
compat_basestring,
|
|
|
|
compat_basestring,
|
|
|
|
compat_cookiejar,
|
|
|
|
compat_cookiejar,
|
|
|
|
|
|
|
|
compat_filter as filter,
|
|
|
|
compat_get_terminal_size,
|
|
|
|
compat_get_terminal_size,
|
|
|
|
compat_http_client,
|
|
|
|
compat_http_client,
|
|
|
|
|
|
|
|
compat_integer_types,
|
|
|
|
compat_kwargs,
|
|
|
|
compat_kwargs,
|
|
|
|
|
|
|
|
compat_map as map,
|
|
|
|
compat_numeric_types,
|
|
|
|
compat_numeric_types,
|
|
|
|
compat_os_name,
|
|
|
|
compat_os_name,
|
|
|
|
compat_str,
|
|
|
|
compat_str,
|
|
|
@ -64,6 +67,7 @@ from .utils import (
|
|
|
|
int_or_none,
|
|
|
|
int_or_none,
|
|
|
|
ISO3166Utils,
|
|
|
|
ISO3166Utils,
|
|
|
|
locked_file,
|
|
|
|
locked_file,
|
|
|
|
|
|
|
|
LazyList,
|
|
|
|
make_HTTPS_handler,
|
|
|
|
make_HTTPS_handler,
|
|
|
|
MaxDownloadsReached,
|
|
|
|
MaxDownloadsReached,
|
|
|
|
orderedSet,
|
|
|
|
orderedSet,
|
|
|
@ -2109,10 +2113,36 @@ class YoutubeDL(object):
|
|
|
|
return self._download_retcode
|
|
|
|
return self._download_retcode
|
|
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
@staticmethod
|
|
|
|
def filter_requested_info(info_dict):
|
|
|
|
def sanitize_info(info_dict, remove_private_keys=False):
|
|
|
|
return dict(
|
|
|
|
''' Sanitize the infodict for converting to json '''
|
|
|
|
(k, v) for k, v in info_dict.items()
|
|
|
|
if info_dict is None:
|
|
|
|
if k not in ['requested_formats', 'requested_subtitles'])
|
|
|
|
return info_dict
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if remove_private_keys:
|
|
|
|
|
|
|
|
reject = lambda k, v: (v is None
|
|
|
|
|
|
|
|
or k.startswith('__')
|
|
|
|
|
|
|
|
or k in ('requested_formats',
|
|
|
|
|
|
|
|
'requested_subtitles'))
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
reject = lambda k, v: False
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def filter_fn(obj):
|
|
|
|
|
|
|
|
if isinstance(obj, dict):
|
|
|
|
|
|
|
|
return dict((k, filter_fn(v)) for k, v in obj.items() if not reject(k, v))
|
|
|
|
|
|
|
|
elif isinstance(obj, (list, tuple, set, LazyList)):
|
|
|
|
|
|
|
|
return list(map(filter_fn, obj))
|
|
|
|
|
|
|
|
elif obj is None or any(isinstance(obj, c)
|
|
|
|
|
|
|
|
for c in (compat_integer_types,
|
|
|
|
|
|
|
|
(compat_str, float, bool))):
|
|
|
|
|
|
|
|
return obj
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
return repr(obj)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return filter_fn(info_dict)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@classmethod
|
|
|
|
|
|
|
|
def filter_requested_info(cls, info_dict):
|
|
|
|
|
|
|
|
return cls.sanitize_info(info_dict, True)
|
|
|
|
|
|
|
|
|
|
|
|
def post_process(self, filename, ie_info):
|
|
|
|
def post_process(self, filename, ie_info):
|
|
|
|
"""Run all the postprocessors on the given file."""
|
|
|
|
"""Run all the postprocessors on the given file."""
|
|
|
|