diff options
Diffstat (limited to 'youtube_dl/extractor/ooyala.py')
| -rw-r--r-- | youtube_dl/extractor/ooyala.py | 88 | 
1 files changed, 43 insertions, 45 deletions
| diff --git a/youtube_dl/extractor/ooyala.py b/youtube_dl/extractor/ooyala.py index 4c119071d..09bc291f0 100644 --- a/youtube_dl/extractor/ooyala.py +++ b/youtube_dl/extractor/ooyala.py @@ -15,7 +15,7 @@ from ..compat import compat_urllib_parse_urlencode  class OoyalaBaseIE(InfoExtractor):      _PLAYER_BASE = 'http://player.ooyala.com/'      _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'):          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          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 = []          formats = [] -        for supported_format in ('mp4', 'm3u8', 'hds', 'rtmp'): -            auth_data = self._download_json( -                self._AUTHORIZATION_URL_TEMPLATE % (pcode, embed_code) + -                compat_urllib_parse_urlencode({ -                    'domain': domain, -                    'supportedFormats': supported_format -                }), -                video_id, 'Downloading %s JSON' % supported_format) - -            cur_auth_data = auth_data['authorization_data'][embed_code] - -            if cur_auth_data['authorized']: -                for stream in cur_auth_data['streams']: -                    url = base64.b64decode( -                        stream['url']['data'].encode('ascii')).decode('utf-8') -                    if url in urls: -                        continue -                    urls.append(url) -                    delivery_type = stream['delivery_type'] -                    if delivery_type == 'hls' or '.m3u8' in url: -                        formats.extend(self._extract_m3u8_formats( -                            url, embed_code, 'mp4', 'm3u8_native', -                            m3u8_id='hls', fatal=False)) -                    elif delivery_type == 'hds' or '.f4m' in url: -                        formats.extend(self._extract_f4m_formats( -                            url + '?hdcore=3.7.0', embed_code, f4m_id='hds', fatal=False)) -                    elif '.smil' in url: -                        formats.extend(self._extract_smil_formats( -                            url, embed_code, fatal=False)) -                    else: -                        formats.append({ -                            'url': url, -                            'ext': stream.get('delivery_type'), -                            '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) +        if cur_auth_data['authorized']: +            for stream in cur_auth_data['streams']: +                url = base64.b64decode( +                    stream['url']['data'].encode('ascii')).decode('utf-8') +                if url in urls: +                    continue +                urls.append(url) +                delivery_type = stream['delivery_type'] +                if delivery_type == 'hls' or '.m3u8' in url: +                    formats.extend(self._extract_m3u8_formats( +                        url, embed_code, 'mp4', 'm3u8_native', +                        m3u8_id='hls', fatal=False)) +                elif delivery_type == 'hds' or '.f4m' in url: +                    formats.extend(self._extract_f4m_formats( +                        url + '?hdcore=3.7.0', embed_code, f4m_id='hds', fatal=False)) +                elif '.smil' in url: +                    formats.extend(self._extract_smil_formats( +                        url, embed_code, fatal=False)) +                else: +                    formats.append({ +                        'url': url, +                        'ext': stream.get('delivery_type'), +                        '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)          subtitles = {} | 
