diff options
| author | Jaime Marquínez Ferrándiz <jaime.marquinez.ferrandiz@gmail.com> | 2014-02-23 11:29:42 +0100 | 
|---|---|---|
| committer | Jaime Marquínez Ferrándiz <jaime.marquinez.ferrandiz@gmail.com> | 2015-01-11 11:35:18 +0100 | 
| commit | f3ff1a3696c4080468e2cc5810c34273b148bd3e (patch) | |
| tree | 54a7d45e3ae8d34bc1097676f9355d7687c25cae | |
| parent | aa24de39aae6b9a6ad59720258b9018f544a888f (diff) | |
YoutubeDL: Make the decision about removing the original file after each postprocessor is run (fixes #2261)
If one of the processors said the file should be kept, it wouldn't pay
attention to the response from the following processors. This was wrong if the
'keep_video' option was False, if the first extractor modifies the original file
and then we extract its audio we don't want to keep the original video file.
| -rwxr-xr-x | youtube_dl/YoutubeDL.py | 17 | 
1 files changed, 9 insertions, 8 deletions
| diff --git a/youtube_dl/YoutubeDL.py b/youtube_dl/YoutubeDL.py index 47e143d89..65581ec63 100755 --- a/youtube_dl/YoutubeDL.py +++ b/youtube_dl/YoutubeDL.py @@ -1235,14 +1235,15 @@ class YoutubeDL(object):          """Run all the postprocessors on the given file."""          info = dict(ie_info)          info['filepath'] = filename -        keep_video = None          pps_chain = []          if ie_info.get('__postprocessors') is not None:              pps_chain.extend(ie_info['__postprocessors'])          pps_chain.extend(self._pps)          for pp in pps_chain: +            keep_video = None +            old_filename = info['filepath']              try: -                keep_video_wish, new_info = pp.run(info) +                keep_video_wish, info = pp.run(info)                  if keep_video_wish is not None:                      if keep_video_wish:                          keep_video = keep_video_wish @@ -1251,12 +1252,12 @@ class YoutubeDL(object):                          keep_video = keep_video_wish              except PostProcessingError as e:                  self.report_error(e.msg) -        if keep_video is False and not self.params.get('keepvideo', False): -            try: -                self.to_screen('Deleting original file %s (pass -k to keep)' % filename) -                os.remove(encodeFilename(filename)) -            except (IOError, OSError): -                self.report_warning('Unable to remove downloaded video file') +            if keep_video is False and not self.params.get('keepvideo', False): +                try: +                    self.to_screen('Deleting original file %s (pass -k to keep)' % old_filename) +                    os.remove(encodeFilename(old_filename)) +                except (IOError, OSError): +                    self.report_warning('Unable to remove downloaded video file')      def _make_archive_id(self, info_dict):          # Future-proof against any change in case | 
