diff options
Diffstat (limited to 'youtube_dl/downloader/external.py')
| -rw-r--r-- | youtube_dl/downloader/external.py | 12 | 
1 files changed, 11 insertions, 1 deletions
| diff --git a/youtube_dl/downloader/external.py b/youtube_dl/downloader/external.py index e13cf547d..e78169a0d 100644 --- a/youtube_dl/downloader/external.py +++ b/youtube_dl/downloader/external.py @@ -29,7 +29,17 @@ class ExternalFD(FileDownloader):          self.report_destination(filename)          tmpfilename = self.temp_name(filename) -        retval = self._call_downloader(tmpfilename, info_dict) +        try: +            retval = self._call_downloader(tmpfilename, info_dict) +        except KeyboardInterrupt: +            if not info_dict.get('is_live'): +                raise +            # Live stream downloading cancellation should be considered as +            # correct and expected termination thus all postprocessing +            # should take place +            retval = 0 +            self.to_screen('[%s] Interrupted by user' % self.get_basename()) +          if retval == 0:              fsize = os.path.getsize(encodeFilename(tmpfilename))              self.to_screen('\r[%s] Downloaded %s bytes' % (self.get_basename(), fsize)) | 
