Browse Source

[adobepass] Add Suddenlink MSO (#2977)

Closes #2704
Authored by: CplPwnies
CplPwnies 3 years ago
parent
commit
9e0e6adb2d
1 changed files with 51 additions and 0 deletions
  1. 51 0
      yt_dlp/extractor/adobepass.py

+ 51 - 0
yt_dlp/extractor/adobepass.py

@@ -1345,6 +1345,11 @@ MSO_INFO = {
         'username_field': 'username',
         'password_field': 'password',
     },
+    'Suddenlink': {
+        'name': 'Suddenlink',
+        'username_field': 'username',
+        'password_field': 'password',
+    },
 }
 
 
@@ -1635,6 +1640,52 @@ class AdobePassIE(InfoExtractor):
                         urlh.geturl(), video_id, 'Sending final bookend',
                         query=hidden_data)
 
+                    post_form(mvpd_confirm_page_res, 'Confirming Login')
+                elif mso_id == 'Suddenlink':
+                    # Suddenlink is similar to SlingTV in using a tab history count and a meta refresh,
+                    # but they also do a dynmaic redirect using javascript that has to be followed as well
+                    first_bookend_page, urlh = post_form(
+                        provider_redirect_page_res, 'Pressing Continue...')
+
+                    hidden_data = self._hidden_inputs(first_bookend_page)
+                    hidden_data['history_val'] = 1
+
+                    provider_login_redirect_page = self._download_webpage(
+                        urlh.geturl(), video_id, 'Sending First Bookend',
+                        query=hidden_data)
+
+                    provider_tryauth_url = self._html_search_regex(
+                        r'url:\s*[\'"]([^\'"]+)', provider_login_redirect_page, 'ajaxurl')
+
+                    provider_tryauth_page = self._download_webpage(
+                        provider_tryauth_url, video_id, 'Submitting TryAuth',
+                        query=hidden_data)
+
+                    provider_login_page_res = self._download_webpage_handle(
+                        f'https://authorize.suddenlink.net/saml/module.php/authSynacor/login.php?AuthState={provider_tryauth_page}',
+                        video_id, 'Getting Login Page',
+                        query=hidden_data)
+
+                    provider_association_redirect, urlh = post_form(
+                        provider_login_page_res, 'Logging in', {
+                            mso_info['username_field']: username,
+                            mso_info['password_field']: password
+                        })
+
+                    provider_refresh_redirect_url = extract_redirect_url(
+                        provider_association_redirect, url=urlh.geturl())
+
+                    last_bookend_page, urlh = self._download_webpage_handle(
+                        provider_refresh_redirect_url, video_id,
+                        'Downloading Auth Association Redirect Page')
+
+                    hidden_data = self._hidden_inputs(last_bookend_page)
+                    hidden_data['history_val'] = 3
+
+                    mvpd_confirm_page_res = self._download_webpage_handle(
+                        urlh.geturl(), video_id, 'Sending Final Bookend',
+                        query=hidden_data)
+
                     post_form(mvpd_confirm_page_res, 'Confirming Login')
                 else:
                     # Some providers (e.g. DIRECTV NOW) have another meta refresh