[ooyala] use api v2 to reduce requests for format extraction
This commit is contained in:
		| @@ -15,7 +15,7 @@ from ..compat import compat_urllib_parse_urlencode | |||||||
| class OoyalaBaseIE(InfoExtractor): | class OoyalaBaseIE(InfoExtractor): | ||||||
|     _PLAYER_BASE = 'http://player.ooyala.com/' |     _PLAYER_BASE = 'http://player.ooyala.com/' | ||||||
|     _CONTENT_TREE_BASE = _PLAYER_BASE + 'player_api/v1/content_tree/' |     _CONTENT_TREE_BASE = _PLAYER_BASE + 'player_api/v1/content_tree/' | ||||||
|     _AUTHORIZATION_URL_TEMPLATE = _PLAYER_BASE + 'sas/player_api/v1/authorization/embed_code/%s/%s?' |     _AUTHORIZATION_URL_TEMPLATE = _PLAYER_BASE + 'sas/player_api/v2/authorization/embed_code/%s/%s?' | ||||||
|  |  | ||||||
|     def _extract(self, content_tree_url, video_id, domain='example.org'): |     def _extract(self, content_tree_url, video_id, domain='example.org'): | ||||||
|         content_tree = self._download_json(content_tree_url, video_id)['content_tree'] |         content_tree = self._download_json(content_tree_url, video_id)['content_tree'] | ||||||
| @@ -24,52 +24,50 @@ class OoyalaBaseIE(InfoExtractor): | |||||||
|         pcode = metadata.get('asset_pcode') or embed_code |         pcode = metadata.get('asset_pcode') or embed_code | ||||||
|         title = metadata['title'] |         title = metadata['title'] | ||||||
|  |  | ||||||
|  |         auth_data = self._download_json( | ||||||
|  |             self._AUTHORIZATION_URL_TEMPLATE % (pcode, embed_code) + | ||||||
|  |             compat_urllib_parse_urlencode({ | ||||||
|  |                 'domain': domain, | ||||||
|  |                 'supportedFormats': 'mp4,rtmp,m3u8,hds', | ||||||
|  |             }), video_id) | ||||||
|  |  | ||||||
|  |         cur_auth_data = auth_data['authorization_data'][embed_code] | ||||||
|  |  | ||||||
|         urls = [] |         urls = [] | ||||||
|         formats = [] |         formats = [] | ||||||
|         for supported_format in ('mp4', 'm3u8', 'hds', 'rtmp'): |         if cur_auth_data['authorized']: | ||||||
|             auth_data = self._download_json( |             for stream in cur_auth_data['streams']: | ||||||
|                 self._AUTHORIZATION_URL_TEMPLATE % (pcode, embed_code) + |                 url = base64.b64decode( | ||||||
|                 compat_urllib_parse_urlencode({ |                     stream['url']['data'].encode('ascii')).decode('utf-8') | ||||||
|                     'domain': domain, |                 if url in urls: | ||||||
|                     'supportedFormats': supported_format |                     continue | ||||||
|                 }), |                 urls.append(url) | ||||||
|                 video_id, 'Downloading %s JSON' % supported_format) |                 delivery_type = stream['delivery_type'] | ||||||
|  |                 if delivery_type == 'hls' or '.m3u8' in url: | ||||||
|             cur_auth_data = auth_data['authorization_data'][embed_code] |                     formats.extend(self._extract_m3u8_formats( | ||||||
|  |                         url, embed_code, 'mp4', 'm3u8_native', | ||||||
|             if cur_auth_data['authorized']: |                         m3u8_id='hls', fatal=False)) | ||||||
|                 for stream in cur_auth_data['streams']: |                 elif delivery_type == 'hds' or '.f4m' in url: | ||||||
|                     url = base64.b64decode( |                     formats.extend(self._extract_f4m_formats( | ||||||
|                         stream['url']['data'].encode('ascii')).decode('utf-8') |                         url + '?hdcore=3.7.0', embed_code, f4m_id='hds', fatal=False)) | ||||||
|                     if url in urls: |                 elif '.smil' in url: | ||||||
|                         continue |                     formats.extend(self._extract_smil_formats( | ||||||
|                     urls.append(url) |                         url, embed_code, fatal=False)) | ||||||
|                     delivery_type = stream['delivery_type'] |                 else: | ||||||
|                     if delivery_type == 'hls' or '.m3u8' in url: |                     formats.append({ | ||||||
|                         formats.extend(self._extract_m3u8_formats( |                         'url': url, | ||||||
|                             url, embed_code, 'mp4', 'm3u8_native', |                         'ext': stream.get('delivery_type'), | ||||||
|                             m3u8_id='hls', fatal=False)) |                         'vcodec': stream.get('video_codec'), | ||||||
|                     elif delivery_type == 'hds' or '.f4m' in url: |                         'format_id': delivery_type, | ||||||
|                         formats.extend(self._extract_f4m_formats( |                         'width': int_or_none(stream.get('width')), | ||||||
|                             url + '?hdcore=3.7.0', embed_code, f4m_id='hds', fatal=False)) |                         'height': int_or_none(stream.get('height')), | ||||||
|                     elif '.smil' in url: |                         'abr': int_or_none(stream.get('audio_bitrate')), | ||||||
|                         formats.extend(self._extract_smil_formats( |                         'vbr': int_or_none(stream.get('video_bitrate')), | ||||||
|                             url, embed_code, fatal=False)) |                         'fps': float_or_none(stream.get('framerate')), | ||||||
|                     else: |                     }) | ||||||
|                         formats.append({ |         else: | ||||||
|                             'url': url, |             raise ExtractorError('%s said: %s' % ( | ||||||
|                             'ext': stream.get('delivery_type'), |                 self.IE_NAME, cur_auth_data['message']), expected=True) | ||||||
|                             'vcodec': stream.get('video_codec'), |  | ||||||
|                             'format_id': delivery_type, |  | ||||||
|                             'width': int_or_none(stream.get('width')), |  | ||||||
|                             'height': int_or_none(stream.get('height')), |  | ||||||
|                             'abr': int_or_none(stream.get('audio_bitrate')), |  | ||||||
|                             'vbr': int_or_none(stream.get('video_bitrate')), |  | ||||||
|                             'fps': float_or_none(stream.get('framerate')), |  | ||||||
|                         }) |  | ||||||
|             else: |  | ||||||
|                 raise ExtractorError('%s said: %s' % ( |  | ||||||
|                     self.IE_NAME, cur_auth_data['message']), expected=True) |  | ||||||
|         self._sort_formats(formats) |         self._sort_formats(formats) | ||||||
|  |  | ||||||
|         subtitles = {} |         subtitles = {} | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 remitamine
					remitamine