aboutsummaryrefslogtreecommitdiffstats
path: root/hypervideo_dl/extractor/ooyala.py
diff options
context:
space:
mode:
Diffstat (limited to 'hypervideo_dl/extractor/ooyala.py')
-rw-r--r--hypervideo_dl/extractor/ooyala.py27
1 files changed, 24 insertions, 3 deletions
diff --git a/hypervideo_dl/extractor/ooyala.py b/hypervideo_dl/extractor/ooyala.py
index 20cfa0a..65afccd 100644
--- a/hypervideo_dl/extractor/ooyala.py
+++ b/hypervideo_dl/extractor/ooyala.py
@@ -1,5 +1,3 @@
-from __future__ import unicode_literals
-
import base64
import re
@@ -12,6 +10,7 @@ from ..utils import (
determine_ext,
float_or_none,
int_or_none,
+ smuggle_url,
try_get,
unsmuggle_url,
)
@@ -86,7 +85,6 @@ class OoyalaBaseIE(InfoExtractor):
if not formats and not auth_data.get('authorized'):
self.raise_no_formats('%s said: %s' % (
self.IE_NAME, auth_data['message']), expected=True)
- self._sort_formats(formats)
subtitles = {}
for lang, sub in metadata.get('closed_captions_vtt', {}).get('captions', {}).items():
@@ -153,6 +151,29 @@ class OoyalaIE(OoyalaBaseIE):
}
]
+ def _extract_from_webpage(self, url, webpage):
+ mobj = (re.search(r'player\.ooyala\.com/[^"?]+[?#][^"]*?(?:embedCode|ec)=(?P<ec>[^"&]+)', webpage)
+ or re.search(r'OO\.Player\.create\([\'"].*?[\'"],\s*[\'"](?P<ec>.{32})[\'"]', webpage)
+ or re.search(r'OO\.Player\.create\.apply\(\s*OO\.Player\s*,\s*op\(\s*\[\s*[\'"][^\'"]*[\'"]\s*,\s*[\'"](?P<ec>.{32})[\'"]', webpage)
+ or re.search(r'SBN\.VideoLinkset\.ooyala\([\'"](?P<ec>.{32})[\'"]\)', webpage)
+ or re.search(r'data-ooyala-video-id\s*=\s*[\'"](?P<ec>.{32})[\'"]', webpage))
+ if mobj is not None:
+ embed_token = self._search_regex(
+ r'embedToken[\'"]?\s*:\s*[\'"]([^\'"]+)',
+ webpage, 'ooyala embed token', default=None)
+ yield self._build_url_result(smuggle_url(
+ mobj.group('ec'), {
+ 'domain': url,
+ 'embed_token': embed_token,
+ }))
+ return
+
+ # Look for multiple Ooyala embeds on SBN network websites
+ mobj = re.search(r'SBN\.VideoLinkset\.entryGroup\((\[.*?\])', webpage)
+ if mobj is not None:
+ for v in self._parse_json(mobj.group(1), self._generic_id(url), fatal=False) or []:
+ yield self._build_url_result(smuggle_url(v['provider_video_id'], {'domain': url}))
+
@staticmethod
def _url_for_embed_code(embed_code):
return 'http://player.ooyala.com/player.js?embedCode=%s' % embed_code