From 9fcd8355e57b4ef5605a015a0039d1bbe2375cf3 Mon Sep 17 00:00:00 2001 From: Ricardo Garcia Date: Mon, 21 Jul 2008 23:53:06 +0200 Subject: [PATCH] Correct a few formatting bugs and add .to_stdout() to downloader --- youtube-dl | 72 ++++++++++++++++++++++++++++++------------------------ 1 file changed, 40 insertions(+), 32 deletions(-) diff --git a/youtube-dl b/youtube-dl index dfbdc4a47..adb4234c7 100755 --- a/youtube-dl +++ b/youtube-dl @@ -84,8 +84,6 @@ class FileDownloader(object): else: exponent = long(math.log(float(bytes), 1024.0)) suffix = 'bkMGTPEZY'[exponent] - if exponent == 0: - return '%s%s' % (bytes, suffix) converted = float(bytes) / float(1024**exponent) return '%.2f%s' % (converted, suffix) @@ -113,7 +111,7 @@ class FileDownloader(object): def calc_speed(start, now, bytes): dif = now - start if bytes == 0 or dif < 0.001: # One millisecond - return '%9s' % 'N/A b/s' + return '%10s' % '---b/s' return '%10s' % ('%s/s' % FileDownloader.format_bytes(float(bytes) / dif)) @staticmethod @@ -144,6 +142,12 @@ class FileDownloader(object): self._ies.append(ie) ie.set_downloader(self) + def to_stdout(self, message, skip_eol=False): + """Print message to stdout if not in quiet mode.""" + if not self._params.get('quiet', False): + sys.stdout.write('%s%s' % (message, ['\n', ''][skip_eol])) + sys.stdout.flush() + def download(self, url_list): """Download a given list of URLs.""" for url in url_list: @@ -199,11 +203,8 @@ class FileDownloader(object): percent_str = self.calc_percent(byte_counter, data_len) eta_str = self.calc_eta(start, time.time(), data_len, byte_counter) speed_str = self.calc_speed(start, time.time(), byte_counter) - - if not self._params.get('quiet', False): - sys.stdout.write('\r[download] %s of %s at %s ETA %s' % - (percent_str, data_len_str, speed_str, eta_str)) - sys.stdout.flush() + self.to_stdout('\r[download] %s of %s at %s ETA %s' % + (percent_str, data_len_str, speed_str, eta_str), skip_eol=True) before = time.time() data_block = data.read(block_size) @@ -215,9 +216,7 @@ class FileDownloader(object): stream.write(data_block) block_size = self.best_block_size(after - before, data_block_len) - if not self._params.get('quiet', False): - print - + self.to_stdout('') if data_len is not None and str(byte_counter) != data_len: raise ValueError('Content too short: %s/%s bytes' % (byte_counter, data_len)) @@ -323,11 +322,13 @@ class YoutubeIE(InfoExtractor): return # Log in - login_form = { 'current_form': 'loginForm', + login_form = { + 'current_form': 'loginForm', 'next': '/', 'action_login': 'Log In', 'username': username, - 'password': password, } + 'password': password, + } request = urllib2.Request(self._LOGIN_URL, urllib.urlencode(login_form), std_headers) try: self.to_stdout('[youtube] Logging in') @@ -340,8 +341,10 @@ class YoutubeIE(InfoExtractor): return # Confirm age - age_form = { 'next_url': '/', - 'action_confirm': 'Confirm', } + age_form = { + 'next_url': '/', + 'action_confirm': 'Confirm', + } request = urllib2.Request(self._AGE_URL, urllib.urlencode(age_form), std_headers) try: self.to_stdout('[youtube] Confirming age') @@ -386,6 +389,7 @@ class YoutubeIE(InfoExtractor): video_real_url = 'http://www.youtube.com/get_video?video_id=%s&t=%s' % (video_id, mobj.group(1)) if format_param is not None: video_real_url = '%s&fmt=%s' % (video_real_url, format_param) + self.to_stdout('[youtube] %s: URL: %s' % (video_id, video_real_url)) # uploader mobj = re.search(r'More From: ([^<]*)<', video_webpage) @@ -407,13 +411,14 @@ class YoutubeIE(InfoExtractor): simple_title = simple_title.strip(u'_') # Return information - return [{ 'id': video_id, - 'url': video_real_url, - 'uploader': video_uploader, - 'title': video_title, - 'stitle': simple_title, - 'ext': video_extension, - }] + return [{ + 'id': video_id, + 'url': video_real_url, + 'uploader': video_uploader, + 'title': video_title, + 'stitle': simple_title, + 'ext': video_extension, + }] if __name__ == '__main__': try: @@ -425,17 +430,20 @@ if __name__ == '__main__': youtube_ie = YoutubeIE() # File downloader - fd = FileDownloader({ 'usenetrc': False, - 'username': None, - 'password': None, - 'quiet': False, - 'format': None, - 'outtmpl': '%(id)s.%(ext)s' - }) + fd = FileDownloader({ + 'usenetrc': False, + 'username': None, + 'password': None, + 'quiet': False, + 'format': None, + 'outtmpl': '%(id)s.%(ext)s' + }) fd.add_info_extractor(youtube_ie) - fd.download([ 'http://www.youtube.com/watch?v=t7qdwI7TVe8', - 'http://www.youtube.com/watch?v=IJyn3pRcy_Q', - 'http://www.youtube.com/watch?v=DZRXe1wtC-M', ]) + fd.download([ + 'http://www.youtube.com/watch?v=t7qdwI7TVe8', + 'http://www.youtube.com/watch?v=IJyn3pRcy_Q', + 'http://www.youtube.com/watch?v=DZRXe1wtC-M', + ]) except KeyboardInterrupt: sys.exit('\nERROR: Interrupted by user')