commit: e7db6759e4c4ca5099a997285642e60b84eee2c6
parent b364c87c423cbc031cd64566a1b283097b560d59
Author: Sergey M․ <dstftw@gmail.com>
Date: Sat, 29 Apr 2017 04:33:35 +0700
[downloader/external] Properly handle live stream downloading cancellation (closes #8932)
Diffstat:
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git 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))