|
@@ -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)
|