Merge branch 'remitamine-brightcove_in_page_embed'
[youtube-dl] / youtube_dl / extractor / brightcove.py
index d494b8b6704b96cc1750654207459be3bb4ad38d..6b184157cc28663c3c2d01c5360590b95e41769a 100644 (file)
@@ -20,17 +20,17 @@ from ..utils import (
     ExtractorError,
     find_xpath_attr,
     fix_xml_ampersands,
-    unescapeHTML,
-    unsmuggle_url,
-    js_to_json,
     float_or_none,
+    js_to_json,
     int_or_none,
     parse_iso8601,
-    extract_attributes,
+    unescapeHTML,
+    unsmuggle_url,
 )
 
 
-class BrightcoveIE(InfoExtractor):
+class BrightcoveLegacyIE(InfoExtractor):
+    IE_NAME = 'brightcove:legacy'
     _VALID_URL = r'(?:https?://.*brightcove\.com/(services|viewer).*?\?|brightcove:)(?P<query>.*)'
     _FEDERATED_URL_TEMPLATE = 'http://c.brightcove.com/services/viewer/htmlFederated?%s'
 
@@ -353,7 +353,8 @@ class BrightcoveIE(InfoExtractor):
         return info
 
 
-class BrightcoveInPageEmbedIE(InfoExtractor):
+class BrightcoveNewIE(InfoExtractor):
+    IE_NAME = 'brightcove:new'
     _VALID_URL = r'https?://players\.brightcove\.net/(?P<account_id>\d+)/(?P<player_id>[^/]+)_(?P<embed>[^/]+)/index\.html\?.*videoId=(?P<video_id>\d+)'
     _TEST = {
         'url': 'http://players.brightcove.net/929656772001/e41d32dc-ec74-459e-a845-6c69f7b724ea_default/index.html?videoId=4463358922001',
@@ -365,12 +366,13 @@ class BrightcoveInPageEmbedIE(InfoExtractor):
             'description': 'md5:eac376a4fe366edc70279bfb681aea16',
             'timestamp': 1441391203,
             'upload_date': '20150904',
-            'duration': 165768,
+            'duration': 165.768,
             'uploader_id': '929656772001',
         }
     }
 
-    def _extract_urls(self, webpage):
+    @staticmethod
+    def _extract_urls(webpage):
         # Reference:
         # 1. http://docs.brightcove.com/en/video-cloud/brightcove-player/guides/publish-video.html#setvideoiniframe
         # 2. http://docs.brightcove.com/en/video-cloud/brightcove-player/guides/publish-video.html#setvideousingjavascript)
@@ -381,7 +383,7 @@ class BrightcoveInPageEmbedIE(InfoExtractor):
         # Look for iframe embeds [1]
         for _, url in re.findall(
                 r'<iframe[^>]+src=(["\'])((?:https?:)//players\.brightcove\.net/\d+/[^/]+/index\.html.+?)\1', webpage):
-            entries.append(self.url_result(self._proto_relative_url(url)))
+            entries.append(url)
         # Look for embed_in_page embeds [2]
         # According to examples from [3] it's unclear whether video id may be optional
         # and what to do when it is
@@ -394,9 +396,9 @@ class BrightcoveInPageEmbedIE(InfoExtractor):
                         src=["\'](?:https?:)?//players\.brightcove\.net/
                         (\d+)/([\da-f-]+)_([^/]+)/index\.min\.js
                 ''', webpage):
-            entries.append(self.url_result(
+            entries.append(
                 'http://players.brightcove.net/%s/%s_%s/index.html?videoId=%s'
-                % (account_id, player_id, embed, video_id)))
+                % (account_id, player_id, embed, video_id))
         return entries
 
     def _real_extract(self, url):