|
|
@ -2089,6 +2089,9 @@ class YoutubeDL(object):
|
|
|
|
# element in the 'formats' field in info_dict is info_dict itself,
|
|
|
|
# element in the 'formats' field in info_dict is info_dict itself,
|
|
|
|
# which can't be exported to json
|
|
|
|
# which can't be exported to json
|
|
|
|
info_dict['formats'] = formats
|
|
|
|
info_dict['formats'] = formats
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
info_dict, _ = self.pre_process(info_dict)
|
|
|
|
|
|
|
|
|
|
|
|
if self.params.get('listformats'):
|
|
|
|
if self.params.get('listformats'):
|
|
|
|
if not info_dict.get('formats'):
|
|
|
|
if not info_dict.get('formats'):
|
|
|
|
raise ExtractorError('No video formats found', expected=True)
|
|
|
|
raise ExtractorError('No video formats found', expected=True)
|
|
|
@ -2141,6 +2144,8 @@ class YoutubeDL(object):
|
|
|
|
", ".join([f['format_id'] for f in formats_to_download])))
|
|
|
|
", ".join([f['format_id'] for f in formats_to_download])))
|
|
|
|
for fmt in formats_to_download:
|
|
|
|
for fmt in formats_to_download:
|
|
|
|
new_info = dict(info_dict)
|
|
|
|
new_info = dict(info_dict)
|
|
|
|
|
|
|
|
# Save a reference to the original info_dict so that it can be modified in process_info if needed
|
|
|
|
|
|
|
|
new_info['__original_infodict'] = info_dict
|
|
|
|
new_info.update(fmt)
|
|
|
|
new_info.update(fmt)
|
|
|
|
self.process_info(new_info)
|
|
|
|
self.process_info(new_info)
|
|
|
|
# We update the info dict with the best quality format (backwards compatibility)
|
|
|
|
# We update the info dict with the best quality format (backwards compatibility)
|
|
|
@ -2304,8 +2309,6 @@ class YoutubeDL(object):
|
|
|
|
self.post_extract(info_dict)
|
|
|
|
self.post_extract(info_dict)
|
|
|
|
self._num_downloads += 1
|
|
|
|
self._num_downloads += 1
|
|
|
|
|
|
|
|
|
|
|
|
info_dict, _ = self.pre_process(info_dict)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# info_dict['_filename'] needs to be set for backward compatibility
|
|
|
|
# info_dict['_filename'] needs to be set for backward compatibility
|
|
|
|
info_dict['_filename'] = full_filename = self.prepare_filename(info_dict, warn=True)
|
|
|
|
info_dict['_filename'] = full_filename = self.prepare_filename(info_dict, warn=True)
|
|
|
|
temp_filename = self.prepare_filename(info_dict, 'temp')
|
|
|
|
temp_filename = self.prepare_filename(info_dict, 'temp')
|
|
|
@ -2743,6 +2746,7 @@ class YoutubeDL(object):
|
|
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
@staticmethod
|
|
|
|
def filter_requested_info(info_dict, actually_filter=True):
|
|
|
|
def filter_requested_info(info_dict, actually_filter=True):
|
|
|
|
|
|
|
|
info_dict.pop('__original_infodict', None) # Always remove this
|
|
|
|
if not actually_filter:
|
|
|
|
if not actually_filter:
|
|
|
|
info_dict['epoch'] = int(time.time())
|
|
|
|
info_dict['epoch'] = int(time.time())
|
|
|
|
return info_dict
|
|
|
|
return info_dict
|
|
|
@ -2788,9 +2792,14 @@ class YoutubeDL(object):
|
|
|
|
return
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
|
|
post_extractor = info_dict.get('__post_extractor') or (lambda: {})
|
|
|
|
post_extractor = info_dict.get('__post_extractor') or (lambda: {})
|
|
|
|
info_dict.update(post_extractor().items())
|
|
|
|
extra = post_extractor().items()
|
|
|
|
|
|
|
|
info_dict.update(extra)
|
|
|
|
info_dict.pop('__post_extractor', None)
|
|
|
|
info_dict.pop('__post_extractor', None)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
original_infodict = info_dict.get('__original_infodict') or {}
|
|
|
|
|
|
|
|
original_infodict.update(extra)
|
|
|
|
|
|
|
|
original_infodict.pop('__post_extractor', None)
|
|
|
|
|
|
|
|
|
|
|
|
actual_post_extract(info_dict or {})
|
|
|
|
actual_post_extract(info_dict or {})
|
|
|
|
|
|
|
|
|
|
|
|
def pre_process(self, ie_info, key='pre_process', files_to_move=None):
|
|
|
|
def pre_process(self, ie_info, key='pre_process', files_to_move=None):
|
|
|
|