aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRicardo Garcia <sarbalap+freshmeat@gmail.com>2008-07-21 23:53:06 +0200
committerRicardo Garcia <devnull@localhost>2008-07-21 23:53:06 +0200
commit9fcd8355e57b4ef5605a015a0039d1bbe2375cf3 (patch)
tree38fb259da986d210a2e4c74d6e242aba69ca554e
parentb46347267a8c460561d1bc3589c7eab55b6a4655 (diff)
Correct a few formatting bugs and add .to_stdout() to downloader
-rwxr-xr-xyoutube-dl72
1 files 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')