'Run all the postprocessors on the given file.'

def post_process(self, filename, ie_info):

    info = dict(ie_info)
    info[u'filepath'] = filename
    pps_chain = []
    if (ie_info.get(u'__postprocessors') is not None):
        pps_chain.extend(ie_info[u'__postprocessors'])
    pps_chain.extend(self._pps)
    for pp in pps_chain:
        files_to_delete = []
        try:
            (files_to_delete, info) = pp.run(info)
        except PostProcessingError as e:
            self.report_error(e.msg)
        if (files_to_delete and (not self.params.get(u'keepvideo', False))):
            for old_filename in files_to_delete:
                self.to_screen((u'Deleting    original    file    %s    (pass    -k    to    keep)' % old_filename))
                try:
                    os.remove(encodeFilename(old_filename))
                except (IOError, OSError):
                    self.report_warning(u'Unable    to    remove    downloaded    original    file')
