diff options
| author | remitamine <remitamine@gmail.com> | 2016-10-19 20:16:24 +0100 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2016-10-19 20:16:24 +0100 | 
| commit | 9218a6b4f5292cc3d7761484e6b5dbe1e7a1a998 (patch) | |
| tree | d2dea6b854525291c52f299aa161691b172ea66b /youtube_dl/extractor/adobepass.py | |
| parent | 02af6ec70784d168fd27f379a1bf1d0f228f91b3 (diff) | |
| parent | 46f6052950585dbd8f93240984e7c0f7045fac56 (diff) | |
Merge pull request #10819 from raleeper/adobepass
[adobepass] Add Comcast
Diffstat (limited to 'youtube_dl/extractor/adobepass.py')
| -rw-r--r-- | youtube_dl/extractor/adobepass.py | 56 | 
1 files changed, 48 insertions, 8 deletions
diff --git a/youtube_dl/extractor/adobepass.py b/youtube_dl/extractor/adobepass.py index d62010cb2..b6d215a55 100644 --- a/youtube_dl/extractor/adobepass.py +++ b/youtube_dl/extractor/adobepass.py @@ -26,6 +26,11 @@ MSO_INFO = {          'username_field': 'UserName',          'password_field': 'UserPassword',      }, +    'Comcast_SSO': { +        'name': 'Comcast XFINITY', +        'username_field': 'user', +        'password_field': 'passwd', +    },      'thr030': {          'name': '3 Rivers Communications'      }, @@ -1364,14 +1369,49 @@ class AdobePassIE(InfoExtractor):                          'domain_name': 'adobe.com',                          'redirect_url': url,                      }) -                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', { -                    mso_info.get('username_field', 'username'): username, -                    mso_info.get('password_field', 'password'): password, -                }) -                if mso_id != 'Rogers': -                    post_form(mvpd_confirm_page_res, 'Confirming Login') + +                if mso_id == 'Comcast_SSO': +                    # 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') +                        else: +                            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', { +                            mso_info.get('username_field', 'username'): username, +                            mso_info.get('password_field', 'password'): 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') + +                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', { +                        mso_info.get('username_field', 'username'): username, +                        mso_info.get('password_field', 'password'): password, +                    }) +                    if mso_id != 'Rogers': +                        post_form(mvpd_confirm_page_res, 'Confirming Login')                  session = self._download_webpage(                      self._SERVICE_PROVIDER_TEMPLATE % 'session', video_id,  | 
