[downloader/external] Fix download finalization when writing file to stdout (closes #10809)

An OSError or IOError generally indicates something a little more
wrong than a "simple" UnavailableVideoError, so print the actual
traceback that leads to the exception. Otherwise meaningful postmortem
debugging a bug report is essentially infeasible.
This commit is contained in:
John Hawkinson 2016-10-08 09:27:24 -04:00 committed by Sergey M․
parent 0ff2c1ecb6
commit 80aa246094
No known key found for this signature in database
GPG key ID: 2C393E0F18A9236D
2 changed files with 21 additions and 13 deletions

View file

@ -41,15 +41,21 @@ class ExternalFD(FileDownloader):
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))
self.try_rename(tmpfilename, filename)
self._hook_progress({
'downloaded_bytes': fsize,
'total_bytes': fsize,
'filename': filename,
'status': 'finished',
})
if filename == '-':
self._hook_progress({
'filename': filename,
'status': 'finished',
})
else:
fsize = os.path.getsize(encodeFilename(tmpfilename))
self.to_screen('\r[%s] Downloaded %s bytes' % (self.get_basename(), fsize))
self.try_rename(tmpfilename, filename)
self._hook_progress({
'downloaded_bytes': fsize,
'total_bytes': fsize,
'filename': filename,
'status': 'finished',
})
return True
else:
self.to_stderr('\n')