Add support for embedded vevo player (Fixes #1957)
authorPhilipp Hagemeister <phihag@phihag.de>
Mon, 16 Dec 2013 20:45:21 +0000 (21:45 +0100)
committerPhilipp Hagemeister <phihag@phihag.de>
Mon, 16 Dec 2013 20:45:21 +0000 (21:45 +0100)
youtube_dl/extractor/generic.py
youtube_dl/extractor/vevo.py

index a7ea9f733ce8c57076f8acaf496ad0109470ad2d..fca23b6c48f27492f15f9b05ad0ef50cb02da9f3 100644 (file)
@@ -241,6 +241,12 @@ class GenericIE(InfoExtractor):
             # Don't set the extractor because it can be a track url or an album
             return self.url_result(burl)
 
+        # Look for embedded Vevo player
+        mobj = re.search(
+            r'<iframe[^>]+?src=(["\'])(?P<url>(?:https?:)?//(?:cache\.)?vevo\.com/.+?)\1', webpage)
+        if mobj is not None:
+            return self.url_result(mobj.group('url'))
+
         # Start with something easy: JW Player in SWFObject
         mobj = re.search(r'flashvars: [\'"](?:.*&)?file=(http[^\'"&]*)', webpage)
         if mobj is None:
index 4823992ef40f9987a8ef39dde6200286f3bd40a6..7eda9469b377a3c6da5f594d1269c2ca64bbbbc5 100644 (file)
@@ -15,7 +15,11 @@ class VevoIE(InfoExtractor):
     Accepts urls from vevo.com or in the format 'vevo:{id}'
     (currently used by MTVIE)
     """
-    _VALID_URL = r'((http://www\.vevo\.com/watch/(?:[^/]+/[^/]+/)?)|(vevo:))(?P<id>.*?)(\?|$)'
+    _VALID_URL = r'''(?x)
+        (?:https?://www\.vevo\.com/watch/(?:[^/]+/[^/]+/)?|
+           https?://cache\.vevo\.com/m/html/embed\.html\?video=|
+           vevo:)
+        (?P<id>[^&?#]+)'''
     _TESTS = [{
         u'url': u'http://www.vevo.com/watch/hurts/somebody-to-die-for/GB1101300280',
         u'file': u'GB1101300280.mp4',