| 
					
				 | 
			
			
				@@ -17,6 +17,7 @@ from ..utils import ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     intlist_to_bytes, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     unified_strdate, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     clean_html, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    urlencode_postdata, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from ..aes import ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     aes_cbc_decrypt, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -51,6 +52,24 @@ class CrunchyrollIE(InfoExtractor): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         '1080': ('80', '108'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def _login(self): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        (username, password) = self._get_login_info() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if username is None: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self.report_login() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        login_url = 'https://www.crunchyroll.com/?a=formhandler' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        data = urlencode_postdata({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            'formname': 'RpcApiUser_Login', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            'name': username, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            'password': password, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        login_request = compat_urllib_request.Request(login_url, data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        login_request.add_header('Content-Type', 'application/x-www-form-urlencoded') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self._download_webpage(login_request, None, False, 'Wrong login info') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def _real_initialize(self): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self._login() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     def _decrypt_subtitles(self, data, iv, id): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         data = bytes_to_intlist(data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         iv = bytes_to_intlist(iv) 
			 |