mirror of
				https://github.com/ytdl-org/youtube-dl.git
				synced 2025-10-29 09:26:20 -07:00 
			
		
		
		
	Correct a few formatting bugs and add .to_stdout() to downloader
This commit is contained in:
		
				
					committed by
					
						 Ricardo Garcia
						Ricardo Garcia
					
				
			
			
				
	
			
			
			
						parent
						
							b46347267a
						
					
				
				
					commit
					9fcd8355e5
				
			
							
								
								
									
										72
									
								
								youtube-dl
									
									
									
									
									
								
							
							
						
						
									
										72
									
								
								youtube-dl
									
									
									
									
									
								
							| @@ -84,8 +84,6 @@ class FileDownloader(object): | |||||||
| 		else: | 		else: | ||||||
| 			exponent = long(math.log(float(bytes), 1024.0)) | 			exponent = long(math.log(float(bytes), 1024.0)) | ||||||
| 		suffix = 'bkMGTPEZY'[exponent] | 		suffix = 'bkMGTPEZY'[exponent] | ||||||
| 		if exponent == 0: |  | ||||||
| 			return '%s%s' % (bytes, suffix) |  | ||||||
| 		converted = float(bytes) / float(1024**exponent) | 		converted = float(bytes) / float(1024**exponent) | ||||||
| 		return '%.2f%s' % (converted, suffix) | 		return '%.2f%s' % (converted, suffix) | ||||||
|  |  | ||||||
| @@ -113,7 +111,7 @@ class FileDownloader(object): | |||||||
| 	def calc_speed(start, now, bytes): | 	def calc_speed(start, now, bytes): | ||||||
| 		dif = now - start | 		dif = now - start | ||||||
| 		if bytes == 0 or dif < 0.001: # One millisecond | 		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)) | 		return '%10s' % ('%s/s' % FileDownloader.format_bytes(float(bytes) / dif)) | ||||||
|  |  | ||||||
| 	@staticmethod | 	@staticmethod | ||||||
| @@ -144,6 +142,12 @@ class FileDownloader(object): | |||||||
| 		self._ies.append(ie) | 		self._ies.append(ie) | ||||||
| 		ie.set_downloader(self) | 		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): | 	def download(self, url_list): | ||||||
| 		"""Download a given list of URLs.""" | 		"""Download a given list of URLs.""" | ||||||
| 		for url in url_list: | 		for url in url_list: | ||||||
| @@ -199,11 +203,8 @@ class FileDownloader(object): | |||||||
| 			percent_str = self.calc_percent(byte_counter, data_len) | 			percent_str = self.calc_percent(byte_counter, data_len) | ||||||
| 			eta_str = self.calc_eta(start, time.time(), data_len, byte_counter) | 			eta_str = self.calc_eta(start, time.time(), data_len, byte_counter) | ||||||
| 			speed_str = self.calc_speed(start, time.time(), byte_counter) | 			speed_str = self.calc_speed(start, time.time(), byte_counter) | ||||||
|  | 			self.to_stdout('\r[download] %s of %s at %s ETA %s' % | ||||||
| 			if not self._params.get('quiet', False): | 					(percent_str, data_len_str, speed_str, eta_str), skip_eol=True) | ||||||
| 				sys.stdout.write('\r[download] %s of %s at %s ETA %s' % |  | ||||||
| 						(percent_str, data_len_str, speed_str, eta_str)) |  | ||||||
| 				sys.stdout.flush() |  | ||||||
|  |  | ||||||
| 			before = time.time() | 			before = time.time() | ||||||
| 			data_block = data.read(block_size) | 			data_block = data.read(block_size) | ||||||
| @@ -215,9 +216,7 @@ class FileDownloader(object): | |||||||
| 			stream.write(data_block) | 			stream.write(data_block) | ||||||
| 			block_size = self.best_block_size(after - before, data_block_len) | 			block_size = self.best_block_size(after - before, data_block_len) | ||||||
|  |  | ||||||
| 		if not self._params.get('quiet', False): | 		self.to_stdout('') | ||||||
| 			print |  | ||||||
|  |  | ||||||
| 		if data_len is not None and str(byte_counter) != data_len: | 		if data_len is not None and str(byte_counter) != data_len: | ||||||
| 			raise ValueError('Content too short: %s/%s bytes' % (byte_counter, data_len)) | 			raise ValueError('Content too short: %s/%s bytes' % (byte_counter, data_len)) | ||||||
|  |  | ||||||
| @@ -323,11 +322,13 @@ class YoutubeIE(InfoExtractor): | |||||||
| 			return | 			return | ||||||
|  |  | ||||||
| 		# Log in | 		# Log in | ||||||
| 		login_form = {	'current_form': 'loginForm', | 		login_form = { | ||||||
|  | 				'current_form': 'loginForm', | ||||||
| 				'next':		'/', | 				'next':		'/', | ||||||
| 				'action_login':	'Log In', | 				'action_login':	'Log In', | ||||||
| 				'username':	username, | 				'username':	username, | ||||||
| 				'password':	password,	} | 				'password':	password, | ||||||
|  | 				} | ||||||
| 		request = urllib2.Request(self._LOGIN_URL, urllib.urlencode(login_form), std_headers) | 		request = urllib2.Request(self._LOGIN_URL, urllib.urlencode(login_form), std_headers) | ||||||
| 		try: | 		try: | ||||||
| 			self.to_stdout('[youtube] Logging in') | 			self.to_stdout('[youtube] Logging in') | ||||||
| @@ -340,8 +341,10 @@ class YoutubeIE(InfoExtractor): | |||||||
| 			return | 			return | ||||||
| 	 | 	 | ||||||
| 		# Confirm age | 		# Confirm age | ||||||
| 		age_form = {	'next_url':		'/', | 		age_form = { | ||||||
| 				'action_confirm':	'Confirm',	} | 				'next_url':		'/', | ||||||
|  | 				'action_confirm':	'Confirm', | ||||||
|  | 				} | ||||||
| 		request = urllib2.Request(self._AGE_URL, urllib.urlencode(age_form), std_headers) | 		request = urllib2.Request(self._AGE_URL, urllib.urlencode(age_form), std_headers) | ||||||
| 		try: | 		try: | ||||||
| 			self.to_stdout('[youtube] Confirming age') | 			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)) | 		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: | 		if format_param is not None: | ||||||
| 			video_real_url = '%s&fmt=%s' % (video_real_url, format_param) | 			video_real_url = '%s&fmt=%s' % (video_real_url, format_param) | ||||||
|  | 		self.to_stdout('[youtube] %s: URL: %s' % (video_id, video_real_url)) | ||||||
|  |  | ||||||
| 		# uploader | 		# uploader | ||||||
| 		mobj = re.search(r'More From: ([^<]*)<', video_webpage) | 		mobj = re.search(r'More From: ([^<]*)<', video_webpage) | ||||||
| @@ -407,13 +411,14 @@ class YoutubeIE(InfoExtractor): | |||||||
| 		simple_title = simple_title.strip(u'_') | 		simple_title = simple_title.strip(u'_') | ||||||
|  |  | ||||||
| 		# Return information | 		# Return information | ||||||
| 		return [{	'id':		video_id, | 		return [{ | ||||||
| 				'url':		video_real_url, | 			'id':		video_id, | ||||||
| 				'uploader':	video_uploader, | 			'url':		video_real_url, | ||||||
| 				'title':	video_title, | 			'uploader':	video_uploader, | ||||||
| 				'stitle':	simple_title, | 			'title':	video_title, | ||||||
| 				'ext':		video_extension, | 			'stitle':	simple_title, | ||||||
| 				}] | 			'ext':		video_extension, | ||||||
|  | 			}] | ||||||
|  |  | ||||||
| if __name__ == '__main__': | if __name__ == '__main__': | ||||||
| 	try: | 	try: | ||||||
| @@ -425,17 +430,20 @@ if __name__ == '__main__': | |||||||
| 		youtube_ie = YoutubeIE() | 		youtube_ie = YoutubeIE() | ||||||
|  |  | ||||||
| 		# File downloader | 		# File downloader | ||||||
| 		fd = FileDownloader({	'usenetrc': False, | 		fd = FileDownloader({ | ||||||
| 					'username': None, | 			'usenetrc': False, | ||||||
| 					'password': None, | 			'username': None, | ||||||
| 					'quiet': False, | 			'password': None, | ||||||
| 					'format': None, | 			'quiet': False, | ||||||
| 					'outtmpl': '%(id)s.%(ext)s' | 			'format': None, | ||||||
| 					}) | 			'outtmpl': '%(id)s.%(ext)s' | ||||||
|  | 			}) | ||||||
| 		fd.add_info_extractor(youtube_ie) | 		fd.add_info_extractor(youtube_ie) | ||||||
| 		fd.download([	'http://www.youtube.com/watch?v=t7qdwI7TVe8', | 		fd.download([ | ||||||
| 				'http://www.youtube.com/watch?v=IJyn3pRcy_Q', | 			'http://www.youtube.com/watch?v=t7qdwI7TVe8', | ||||||
| 				'http://www.youtube.com/watch?v=DZRXe1wtC-M',	]) | 			'http://www.youtube.com/watch?v=IJyn3pRcy_Q', | ||||||
|  | 			'http://www.youtube.com/watch?v=DZRXe1wtC-M', | ||||||
|  | 			]) | ||||||
|  |  | ||||||
| 	except KeyboardInterrupt: | 	except KeyboardInterrupt: | ||||||
| 		sys.exit('\nERROR: Interrupted by user') | 		sys.exit('\nERROR: Interrupted by user') | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user