self.to_stdout(formatSeconds(info_dict['duration']))
print_mandatory('format')
if self.params.get('forcejson', False):
+ self.post_extract(info_dict)
self.to_stdout(json.dumps(info_dict))
def process_info(self, info_dict):
if self._match_entry(info_dict, incomplete=False) is not None:
return
+ self.post_extract(info_dict)
self._num_downloads += 1
info_dict = self.pre_process(info_dict)
raise
else:
if self.params.get('dump_single_json', False):
+ self.post_extract(res)
self.to_stdout(json.dumps(res))
return self._download_retcode
del files_to_move[old_filename]
return files_to_move, infodict
+ @staticmethod
+ def post_extract(info_dict):
+ def actual_post_extract(info_dict):
+ if info_dict.get('_type') in ('playlist', 'multi_video'):
+ for video_dict in info_dict.get('entries', {}):
+ actual_post_extract(video_dict)
+ return
+
+ if '__post_extractor' not in info_dict:
+ return
+ post_extractor = info_dict['__post_extractor']
+ if post_extractor:
+ info_dict.update(post_extractor().items())
+ del info_dict['__post_extractor']
+ return
+
+ actual_post_extract(info_dict)
+
def pre_process(self, ie_info):
info = dict(ie_info)
for pp in self._pps['beforedl']: