mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 14:45:14 +00:00 
			
		
		
		
	This commit is contained in:
		| @@ -37,7 +37,6 @@ class GoIE(AdobePassIE): | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
|     _VALID_URL = r'https?://(?:(?P<sub_domain>%s)\.)?go\.com/(?:[^/]+/)*(?:vdka(?P<id>\w+)|season-\d+/\d+-(?P<display_id>[^/?#]+))' % '|'.join(_SITE_INFO.keys()) |     _VALID_URL = r'https?://(?:(?P<sub_domain>%s)\.)?go\.com/(?:[^/]+/)*(?:vdka(?P<id>\w+)|season-\d+/\d+-(?P<display_id>[^/?#]+))' % '|'.join(_SITE_INFO.keys()) | ||||||
|     _GEO_COUNTRIES = ['US'] |  | ||||||
|     _TESTS = [{ |     _TESTS = [{ | ||||||
|         'url': 'http://abc.go.com/shows/castle/video/most-recent/vdka0_g86w5onx', |         'url': 'http://abc.go.com/shows/castle/video/most-recent/vdka0_g86w5onx', | ||||||
|         'info_dict': { |         'info_dict': { | ||||||
| @@ -79,44 +78,60 @@ class GoIE(AdobePassIE): | |||||||
|             ext = determine_ext(asset_url) |             ext = determine_ext(asset_url) | ||||||
|             if ext == 'm3u8': |             if ext == 'm3u8': | ||||||
|                 video_type = video_data.get('type') |                 video_type = video_data.get('type') | ||||||
|                 if video_type == 'lf': |                 data = { | ||||||
|                     data = { |                     'video_id': video_data['id'], | ||||||
|                         'video_id': video_data['id'], |                     'video_type': video_type, | ||||||
|                         'video_type': video_type, |                     'brand': brand, | ||||||
|                         'brand': brand, |                     'device': '001', | ||||||
|                         'device': '001', |                 } | ||||||
|                     } |                 if video_data.get('accesslevel') == '1': | ||||||
|                     if video_data.get('accesslevel') == '1': |                     requestor_id = site_info['requestor_id'] | ||||||
|                         requestor_id = site_info['requestor_id'] |                     resource = self._get_mvpd_resource( | ||||||
|                         resource = self._get_mvpd_resource( |                         requestor_id, title, video_id, None) | ||||||
|                             requestor_id, title, video_id, None) |                     auth = self._extract_mvpd_auth( | ||||||
|                         auth = self._extract_mvpd_auth( |                         url, video_id, requestor_id, resource) | ||||||
|                             url, video_id, requestor_id, resource) |                     data.update({ | ||||||
|                         data.update({ |                         'token': auth, | ||||||
|                             'token': auth, |                         'token_type': 'ap', | ||||||
|                             'token_type': 'ap', |                         'adobe_requestor_id': requestor_id, | ||||||
|                             'adobe_requestor_id': requestor_id, |                     }) | ||||||
|                         }) |                 else: | ||||||
|                     entitlement = self._download_json( |                     self._initialize_geo_bypass(['US']) | ||||||
|                         'https://api.entitlement.watchabc.go.com/vp2/ws-secure/entitlement/2020/authorize.json', |                 entitlement = self._download_json( | ||||||
|                         video_id, data=urlencode_postdata(data), headers=self.geo_verification_headers()) |                     'https://api.entitlement.watchabc.go.com/vp2/ws-secure/entitlement/2020/authorize.json', | ||||||
|                     errors = entitlement.get('errors', {}).get('errors', []) |                     video_id, data=urlencode_postdata(data), headers=self.geo_verification_headers()) | ||||||
|                     if errors: |                 errors = entitlement.get('errors', {}).get('errors', []) | ||||||
|                         for error in errors: |                 if errors: | ||||||
|                             if error.get('code') == 1002: |                     for error in errors: | ||||||
|                                 self.raise_geo_restricted( |                         if error.get('code') == 1002: | ||||||
|                                     error['message'], countries=self._GEO_COUNTRIES) |                             self.raise_geo_restricted( | ||||||
|                         error_message = ', '.join([error['message'] for error in errors]) |                                 error['message'], countries=['US']) | ||||||
|                         raise ExtractorError('%s said: %s' % (self.IE_NAME, error_message), expected=True) |                     error_message = ', '.join([error['message'] for error in errors]) | ||||||
|                     asset_url += '?' + entitlement['uplynkData']['sessionKey'] |                     raise ExtractorError('%s said: %s' % (self.IE_NAME, error_message), expected=True) | ||||||
|  |                 asset_url += '?' + entitlement['uplynkData']['sessionKey'] | ||||||
|                 formats.extend(self._extract_m3u8_formats( |                 formats.extend(self._extract_m3u8_formats( | ||||||
|                     asset_url, video_id, 'mp4', m3u8_id=format_id or 'hls', fatal=False)) |                     asset_url, video_id, 'mp4', m3u8_id=format_id or 'hls', fatal=False)) | ||||||
|             else: |             else: | ||||||
|                 formats.append({ |                 f = { | ||||||
|                     'format_id': format_id, |                     'format_id': format_id, | ||||||
|                     'url': asset_url, |                     'url': asset_url, | ||||||
|                     'ext': ext, |                     'ext': ext, | ||||||
|                 }) |                 } | ||||||
|  |                 if re.search(r'(?:/mp4/source/|_source\.mp4)', asset_url): | ||||||
|  |                     f.update({ | ||||||
|  |                         'format_id': ('%s-' % format_id if format_id else '') + 'SOURCE', | ||||||
|  |                         'preference': 1, | ||||||
|  |                     }) | ||||||
|  |                 else: | ||||||
|  |                     mobj = re.search(r'/(\d+)x(\d+)/', asset_url) | ||||||
|  |                     if mobj: | ||||||
|  |                         height = int(mobj.group(2)) | ||||||
|  |                         f.update({ | ||||||
|  |                             'format_id': ('%s-' % format_id if format_id else '') + '%dP' % height, | ||||||
|  |                             'width': int(mobj.group(1)), | ||||||
|  |                             'height': height, | ||||||
|  |                         }) | ||||||
|  |                 formats.append(f) | ||||||
|         self._sort_formats(formats) |         self._sort_formats(formats) | ||||||
|  |  | ||||||
|         subtitles = {} |         subtitles = {} | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Remita Amine
					Remita Amine