summary refs log tree commit diff
diff options
context:
space:
mode:
authorNaglis Jonaitis <njonaitis@gmail.com>2015-02-27 00:34:19 +0200
committerNaglis Jonaitis <njonaitis@gmail.com>2015-02-27 00:34:19 +0200
commite3216b82bf6ef54db63984f7fece4e95fbc3b981 (patch)
treea6d1463f284d6709956ed558b7f43542c82b8272
parentda419e23320aef560c05f543c5ee375e8956c95a (diff)
downloadyoutube-dl-e3216b82bf6ef54db63984f7fece4e95fbc3b981.tar.gz
youtube-dl-e3216b82bf6ef54db63984f7fece4e95fbc3b981.tar.xz
youtube-dl-e3216b82bf6ef54db63984f7fece4e95fbc3b981.zip
[generic] Support dynamic Kaltura embeds (#5016) (#5073)
-rw-r--r--youtube_dl/extractor/generic.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/youtube_dl/extractor/generic.py b/youtube_dl/extractor/generic.py
index 3aff57e30..27e2bc300 100644
--- a/youtube_dl/extractor/generic.py
+++ b/youtube_dl/extractor/generic.py
@@ -557,6 +557,18 @@ class GenericIE(InfoExtractor):
                 'title': 'EP3S5 - Bon Appétit - Baqueira Mi Corazon !',
             }
         },
+        # Kaltura embed
+        {
+            'url': 'http://www.monumentalnetwork.com/videos/john-carlson-postgame-2-25-15',
+            'info_dict': {
+                'id': '1_eergr3h1',
+                'ext': 'mp4',
+                'upload_date': '20150226',
+                'uploader_id': 'MonumentalSports-Kaltura@perfectsensedigital.com',
+                'timestamp': int,
+                'title': 'John Carlson Postgame 2/25/15',
+            },
+        },
     ]
 
     def report_following_redirect(self, new_url):
@@ -1113,6 +1125,12 @@ class GenericIE(InfoExtractor):
         if mobj is not None:
             return self.url_result(mobj.group('url'), 'Zapiks')
 
+        # Look for Kaltura embeds
+        mobj = re.search(
+            r"(?s)kWidget\.(?:thumb)?[Ee]mbed\(\{.*?'wid'\s*:\s*'_?(?P<partner_id>[^']+)',.*?'entry_id'\s*:\s*'(?P<id>[^']+)',", webpage)
+        if mobj is not None:
+            return self.url_result('kaltura:%(partner_id)s:%(id)s' % mobj.groupdict(), 'Kaltura')
+
         def check_video(vurl):
             if YoutubeIE.suitable(vurl):
                 return True