youtube-dl

Another place where youtube-dl lives on
git clone git://git.oshgnacknak.de/youtube-dl.git
Log | Files | Refs | README | LICENSE

commit 79a51069e5c08afe7bf15bca7fcdf44fd0d93eb6
parent a9a346535bd855f4dd01aa32e54345cc741769c4
Author: Remita Amine <remitamine@gmail.com>
Date:   Wed, 12 Apr 2017 15:17:18 +0100

[adobepass] improve comcast and verison login code(closes #10803)

Diffstat:
Myoutube_dl/extractor/adobepass.py | 98++++++++++++++++++++++++++-----------------------------------------------------
1 file changed, 32 insertions(+), 66 deletions(-)

diff --git a/youtube_dl/extractor/adobepass.py b/youtube_dl/extractor/adobepass.py @@ -1389,106 +1389,72 @@ class AdobePassIE(InfoExtractor): # Comcast page flow varies by video site and whether you # are on Comcast's network. provider_redirect_page, urlh = provider_redirect_page_res - # Check for Comcast auto login if 'automatically signing you in' in provider_redirect_page: oauth_redirect_url = self._html_search_regex( r'window\.location\s*=\s*[\'"]([^\'"]+)', provider_redirect_page, 'oauth redirect') - # Just need to process the request. No useful data comes back self._download_webpage( oauth_redirect_url, video_id, 'Confirming auto login') else: if '<form name="signin"' in provider_redirect_page: - # already have the form, just fill it provider_login_page_res = provider_redirect_page_res elif 'http-equiv="refresh"' in provider_redirect_page: - # redirects to the login page oauth_redirect_url = self._html_search_regex( r'content="0;\s*url=([^\'"]+)', provider_redirect_page, 'meta refresh redirect') provider_login_page_res = self._download_webpage_handle( - oauth_redirect_url, - video_id, 'Downloading Provider Login Page') + oauth_redirect_url, video_id, + 'Downloading Provider Login Page') else: provider_login_page_res = post_form( - provider_redirect_page_res, 'Downloading Provider Login Page') + provider_redirect_page_res, + 'Downloading Provider Login Page') - mvpd_confirm_page_res = post_form(provider_login_page_res, 'Logging in', { - mso_info.get('username_field', 'username'): username, - mso_info.get('password_field', 'password'): password, - }) + mvpd_confirm_page_res = post_form( + provider_login_page_res, 'Logging in', { + mso_info['username_field']: username, + mso_info['password_field']: password, + }) mvpd_confirm_page, urlh = mvpd_confirm_page_res if '<button class="submit" value="Resume">Resume</button>' in mvpd_confirm_page: post_form(mvpd_confirm_page_res, 'Confirming Login') - elif mso_id == 'Verizon': # In general, if you're connecting from a Verizon-assigned IP, # you will not actually pass your credentials. provider_redirect_page, urlh = provider_redirect_page_res - # print('provider_redirect_page_url', urlh.geturl()) - # https://signin.verizon.com/sso/VOLPortalLogin?SAMLRequest=<snip> if 'Please wait ...' in provider_redirect_page: - # print('[debug] SAML Auto-Login is TRUE') # GO, saml_redirect_url = self._html_search_regex( r'self\.parent\.location=(["\'])(?P<url>.+?)\1', - provider_redirect_page, 'Extracting SAML Redirect URL', group='url' - ) - # print('saml_redirect_url', saml_redirect_url) - # https://signin.verizon.com/sso/choice/tvpHandler.jsp?loginType=vzRedirect&partner=<snip> + provider_redirect_page, + 'SAML Redirect URL', group='url') saml_login_page = self._download_webpage( - saml_redirect_url, video_id, 'Downloading SAML Login Page' - ) + saml_redirect_url, video_id, + 'Downloading SAML Login Page') else: - if 'Please try again.' in provider_redirect_page: - # print('[debug] SAML Auto-Login is FALSE') # NBC, - provider_login_page_res = provider_redirect_page_res - else: - print('[error] SAML Auto-Login is UNKNOWN') - import sys - sys.exit(1) - provider_login_page, urlh = provider_login_page_res - # print('provider_login_page_url', urlh.geturl()) - # https://signin.verizon.com/sso/VOLPortalLogin?SAMLRequest=<snip> - saml_login_page_res = post_form(provider_login_page_res, 'Logging in', { - mso_info.get('username_field', 'username'): username, - mso_info.get('password_field', 'password'): password, - }) + saml_login_page_res = post_form( + provider_redirect_page_res, 'Logging in', { + mso_info['username_field']: username, + mso_info['password_field']: password, + }) saml_login_page, urlh = saml_login_page_res if 'Please try again.' in saml_login_page: - print("[error] We're sorry, but either the User ID or Password entered is not correct.") - import sys - sys.exit(1) - # elif 'Please wait - we are verifying your account...' in saml_login_page: - # print('saml_login_page_url', urlh.geturl()) - # https://signin.verizon.com/sso/choice/tvpHandler.jsp?loginType=vzRedirect&partner=<snip> - saml_login_url = self._html_search_regex( - r'xmlHttp\.open\(\"POST\",\s(["\'])(?P<url>.+?)\1', - saml_login_page, 'Extracting SAML Login URL', group='url') - # print('saml_login_url', saml_login_url) - # https://signin.verizon.com/sso/TVPHandlerServlet?loginType=vzRedirect&partner=<snip> + raise ExtractorError( + 'We\'re sorry, but either the User ID or Password entered is not correct.') + saml_login_url = self._search_regex( + r'xmlHttp\.open\("POST"\s*,\s*(["\'])(?P<url>.+?)\1', + saml_login_page, 'SAML Login URL', group='url') saml_response_json = self._download_json( saml_login_url, video_id, 'Downloading SAML Response', - headers={'Content-Type': 'text/xml'} - ) - saml_target_url = saml_response_json['targetValue'] - saml_response = saml_response_json['SAMLResponse'] - saml_relay_state = saml_response_json['RelayState'] - # print('saml_target_url', saml_target_url) - # https://sp.auth.adobe.com/sp/saml/SAMLAssertionConsumer - form_data = { - 'SAMLResponse': saml_response, - 'RelayState': saml_relay_state - } - saml_autologin_res = self._download_webpage_handle( - saml_target_url, video_id, - 'Auto-Login', data=urlencode_postdata(form_data), - headers={'Content-Type': 'application/x-www-form-urlencoded'} - ) - original_page, urlh = saml_autologin_res - # print('original_page_url', urlh.geturl()) - + headers={'Content-Type': 'text/xml'}) + self._download_webpage( + saml_response_json['targetValue'], video_id, + 'Confirming Login', data=urlencode_postdata({ + 'SAMLResponse': saml_response_json['SAMLResponse'], + 'RelayState': saml_response_json['RelayState'] + }), headers={ + 'Content-Type': 'application/x-www-form-urlencoded' + }) else: - # Normal, non-Comcast flow provider_login_page_res = post_form( provider_redirect_page_res, 'Downloading Provider Login Page') mvpd_confirm_page_res = post_form(provider_login_page_res, 'Logging in', {