[twitch] Improve authentication
This commit is contained in:
		| @@ -15,6 +15,7 @@ from ..compat import ( | |||||||
|     compat_urlparse, |     compat_urlparse, | ||||||
| ) | ) | ||||||
| from ..utils import ( | from ..utils import ( | ||||||
|  |     encode_dict, | ||||||
|     ExtractorError, |     ExtractorError, | ||||||
|     int_or_none, |     int_or_none, | ||||||
|     parse_duration, |     parse_duration, | ||||||
| @@ -27,8 +28,7 @@ class TwitchBaseIE(InfoExtractor): | |||||||
|  |  | ||||||
|     _API_BASE = 'https://api.twitch.tv' |     _API_BASE = 'https://api.twitch.tv' | ||||||
|     _USHER_BASE = 'http://usher.twitch.tv' |     _USHER_BASE = 'http://usher.twitch.tv' | ||||||
|     _LOGIN_URL = 'https://secure.twitch.tv/login' |     _LOGIN_URL = 'http://www.twitch.tv/login' | ||||||
|     _LOGIN_POST_URL = 'https://passport.twitch.tv/authentications/new' |  | ||||||
|     _NETRC_MACHINE = 'twitch' |     _NETRC_MACHINE = 'twitch' | ||||||
|  |  | ||||||
|     def _handle_error(self, response): |     def _handle_error(self, response): | ||||||
| @@ -61,26 +61,28 @@ class TwitchBaseIE(InfoExtractor): | |||||||
|         if username is None: |         if username is None: | ||||||
|             return |             return | ||||||
|  |  | ||||||
|         login_page = self._download_webpage( |         login_page, handle = self._download_webpage_handle( | ||||||
|             self._LOGIN_URL, None, 'Downloading login page') |             self._LOGIN_URL, None, 'Downloading login page') | ||||||
|  |  | ||||||
|         login_form = self._hidden_inputs(login_page) |         login_form = self._hidden_inputs(login_page) | ||||||
|  |  | ||||||
|         login_form.update({ |         login_form.update({ | ||||||
|             'login': username.encode('utf-8'), |             'username': username, | ||||||
|             'password': password.encode('utf-8'), |             'password': password, | ||||||
|         }) |         }) | ||||||
|  |  | ||||||
|  |         redirect_url = handle.geturl() | ||||||
|  |  | ||||||
|         post_url = self._search_regex( |         post_url = self._search_regex( | ||||||
|             r'<form[^>]+action=(["\'])(?P<url>.+?)\1', login_page, |             r'<form[^>]+action=(["\'])(?P<url>.+?)\1', login_page, | ||||||
|             'post url', default=self._LOGIN_POST_URL, group='url') |             'post url', default=redirect_url, group='url') | ||||||
|  |  | ||||||
|         if not post_url.startswith('http'): |         if not post_url.startswith('http'): | ||||||
|             post_url = compat_urlparse.urljoin(self._LOGIN_URL, post_url) |             post_url = compat_urlparse.urljoin(redirect_url, post_url) | ||||||
|  |  | ||||||
|         request = compat_urllib_request.Request( |         request = compat_urllib_request.Request( | ||||||
|             post_url, compat_urllib_parse.urlencode(login_form).encode('utf-8')) |             post_url, compat_urllib_parse.urlencode(encode_dict(login_form)).encode('utf-8')) | ||||||
|         request.add_header('Referer', self._LOGIN_URL) |         request.add_header('Referer', redirect_url) | ||||||
|         response = self._download_webpage( |         response = self._download_webpage( | ||||||
|             request, None, 'Logging in as %s' % username) |             request, None, 'Logging in as %s' % username) | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Sergey M․
					Sergey M․