diff options
Diffstat (limited to 'youtube_dl/FileDownloader.py')
| -rw-r--r-- | youtube_dl/FileDownloader.py | 42 | 
1 files changed, 35 insertions, 7 deletions
diff --git a/youtube_dl/FileDownloader.py b/youtube_dl/FileDownloader.py index 8f9577512..47124932f 100644 --- a/youtube_dl/FileDownloader.py +++ b/youtube_dl/FileDownloader.py @@ -239,6 +239,15 @@ class FileDownloader(object):                 (percent_str, data_len_str, speed_str, eta_str))          self._report_progress_status(msg) +    def report_progress_live_stream(self, downloaded_data_len, speed, elapsed): +        if self.params.get('noprogress', False): +            return +        downloaded_str = format_bytes(downloaded_data_len) +        speed_str = self.format_speed(speed) +        elapsed_str = FileDownloader.format_seconds(elapsed) +        msg = u'%s at %s (%s)' % (downloaded_str, speed_str, elapsed_str) +        self._report_progress_status(msg) +      def report_finish(self, data_len_str, tot_time):          """Report download finished."""          if self.params.get('noprogress', False): @@ -268,7 +277,7 @@ class FileDownloader(object):          """Report it was impossible to resume download."""          self.to_screen(u'[download] Unable to resume') -    def _download_with_rtmpdump(self, filename, url, player_url, page_url, play_path, tc_url, live): +    def _download_with_rtmpdump(self, filename, url, player_url, page_url, play_path, tc_url, live, conn):          def run_rtmpdump(args):              start = time.time()              resume_percent = None @@ -314,11 +323,27 @@ class FileDownloader(object):                          'eta': eta,                          'speed': speed,                      }) -                elif self.params.get('verbose', False): -                    if not cursor_in_new_line: -                        self.to_screen(u'') -                    cursor_in_new_line = True -                    self.to_screen(u'[rtmpdump] '+line) +                else: +                    # no percent for live streams +                    mobj = re.search(r'([0-9]+\.[0-9]{3}) kB / [0-9]+\.[0-9]{2} sec', line) +                    if mobj: +                        downloaded_data_len = int(float(mobj.group(1))*1024) +                        time_now = time.time() +                        speed = self.calc_speed(start, time_now, downloaded_data_len) +                        self.report_progress_live_stream(downloaded_data_len, speed, time_now - start) +                        cursor_in_new_line = False +                        self._hook_progress({ +                            'downloaded_bytes': downloaded_data_len, +                            'tmpfilename': tmpfilename, +                            'filename': filename, +                            'status': 'downloading', +                            'speed': speed, +                        }) +                    elif self.params.get('verbose', False): +                        if not cursor_in_new_line: +                            self.to_screen(u'') +                        cursor_in_new_line = True +                        self.to_screen(u'[rtmpdump] '+line)              proc.wait()              if not cursor_in_new_line:                  self.to_screen(u'') @@ -351,6 +376,8 @@ class FileDownloader(object):              basic_args += ['--stop', '1']          if live:              basic_args += ['--live'] +        if conn: +            basic_args += ['--conn', conn]          args = basic_args + [[], ['--resume', '--skip', '1']][self.params.get('continuedl', False)]          if sys.platform == 'win32' and sys.version_info < (3, 0): @@ -492,7 +519,8 @@ class FileDownloader(object):                                                  info_dict.get('page_url', None),                                                  info_dict.get('play_path', None),                                                  info_dict.get('tc_url', None), -                                                info_dict.get('rtmp_live', False)) +                                                info_dict.get('rtmp_live', False), +                                                info_dict.get('rtmp_conn', None))          # Attempt to download using mplayer          if url.startswith('mms') or url.startswith('rtsp'):  | 
