about summary refs log tree commit diff
path: root/youtube_dl/extractor/cspan.py
diff options
context:
space:
mode:
authorRemita Amine <remitamine@gmail.com>2017-05-09 00:47:37 +0100
committerRemita Amine <remitamine@gmail.com>2017-05-09 00:51:12 +0100
commit5996d21aeac73509eee060bd26dbec95ede5e2eb (patch)
tree75c48295580cb2ca894660dcf46182c76ddfa99e /youtube_dl/extractor/cspan.py
parentafa0200bf05671be5a380a79206309bdd4f886d6 (diff)
downloadyoutube-dl-5996d21aeac73509eee060bd26dbec95ede5e2eb.tar.gz
youtube-dl-5996d21aeac73509eee060bd26dbec95ede5e2eb.tar.xz
youtube-dl-5996d21aeac73509eee060bd26dbec95ede5e2eb.zip
[cspan] add support for brightcove live embeds(closes #13028)
Diffstat (limited to 'youtube_dl/extractor/cspan.py')
-rw-r--r--youtube_dl/extractor/cspan.py15
1 files changed, 15 insertions, 0 deletions
diff --git a/youtube_dl/extractor/cspan.py b/youtube_dl/extractor/cspan.py
index d4576160b..171820e27 100644
--- a/youtube_dl/extractor/cspan.py
+++ b/youtube_dl/extractor/cspan.py
@@ -10,6 +10,7 @@ from ..utils import (
     smuggle_url,
     determine_ext,
     ExtractorError,
+    extract_attributes,
 )
 from .senateisvp import SenateISVPIE
 from .ustream import UstreamIE
@@ -68,6 +69,7 @@ class CSpanIE(InfoExtractor):
             'uploader_id': '12987475',
         },
     }]
+    BRIGHTCOVE_URL_TEMPLATE = 'http://players.brightcove.net/%s/%s_%s/index.html?videoId=%s'
 
     def _real_extract(self, url):
         video_id = self._match_id(url)
@@ -78,6 +80,19 @@ class CSpanIE(InfoExtractor):
         if ustream_url:
             return self.url_result(ustream_url, UstreamIE.ie_key())
 
+        if '&vod' not in url:
+            bc = self._search_regex(
+                r"(<[^>]+id='brightcove-player-embed'[^>]+>)",
+                webpage, 'brightcove embed', default=None)
+            if bc:
+                bc_attr = extract_attributes(bc)
+                bc_url = self.BRIGHTCOVE_URL_TEMPLATE % (
+                    bc_attr.get('data-bcaccountid', '3162030207001'),
+                    bc_attr.get('data-noprebcplayerid', 'SyGGpuJy3g'),
+                    bc_attr.get('data-newbcplayerid', 'default'),
+                    bc_attr['data-bcid'])
+                return self.url_result(smuggle_url(bc_url, {'source_url': url}))
+
         # We first look for clipid, because clipprog always appears before
         patterns = [r'id=\'clip(%s)\'\s*value=\'([0-9]+)\'' % t for t in ('id', 'prog')]
         results = list(filter(None, (re.search(p, webpage) for p in patterns)))