[downloader/external] Simplify finished progress hook reporting and add elapsed time...
authorSergey M․ <dstftw@gmail.com>
Sat, 24 Mar 2018 09:29:03 +0000 (16:29 +0700)
committerSergey M․ <dstftw@gmail.com>
Sat, 24 Mar 2018 09:35:21 +0000 (16:35 +0700)
youtube_dl/downloader/external.py

index 48c255ddc69c1740272831d5f6d262576b09f889..958d00aac0ae0a3d58eca9069429cd305a137449 100644 (file)
@@ -1,9 +1,10 @@
 from __future__ import unicode_literals
 
 import os.path
+import re
 import subprocess
 import sys
-import re
+import time
 
 from .common import FileDownloader
 from ..compat import (
@@ -30,6 +31,7 @@ class ExternalFD(FileDownloader):
         tmpfilename = self.temp_name(filename)
 
         try:
+            started = time.time()
             retval = self._call_downloader(tmpfilename, info_dict)
         except KeyboardInterrupt:
             if not info_dict.get('is_live'):
@@ -41,21 +43,20 @@ class ExternalFD(FileDownloader):
             self.to_screen('[%s] Interrupted by user' % self.get_basename())
 
         if retval == 0:
-            if filename == '-':
-                self._hook_progress({
-                    'filename': filename,
-                    'status': 'finished',
-                })
-            else:
+            status = {
+                'filename': filename,
+                'status': 'finished',
+                'elapsed': time.time() - started,
+            }
+            if filename != '-':
                 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({
+                status.update({
                     'downloaded_bytes': fsize,
                     'total_bytes': fsize,
-                    'filename': filename,
-                    'status': 'finished',
                 })
+            self._hook_progress(status)
             return True
         else:
             self.to_stderr('\n')