|
@ -10,6 +10,7 @@ from ..utils import ( |
|
|
smuggle_url, |
|
|
smuggle_url, |
|
|
determine_ext, |
|
|
determine_ext, |
|
|
ExtractorError, |
|
|
ExtractorError, |
|
|
|
|
|
extract_attributes, |
|
|
) |
|
|
) |
|
|
from .senateisvp import SenateISVPIE |
|
|
from .senateisvp import SenateISVPIE |
|
|
from .ustream import UstreamIE |
|
|
from .ustream import UstreamIE |
|
@ -68,6 +69,7 @@ class CSpanIE(InfoExtractor): |
|
|
'uploader_id': '12987475', |
|
|
'uploader_id': '12987475', |
|
|
}, |
|
|
}, |
|
|
}] |
|
|
}] |
|
|
|
|
|
BRIGHTCOVE_URL_TEMPLATE = 'http://players.brightcove.net/%s/%s_%s/index.html?videoId=%s' |
|
|
|
|
|
|
|
|
def _real_extract(self, url): |
|
|
def _real_extract(self, url): |
|
|
video_id = self._match_id(url) |
|
|
video_id = self._match_id(url) |
|
@ -78,6 +80,19 @@ class CSpanIE(InfoExtractor): |
|
|
if ustream_url: |
|
|
if ustream_url: |
|
|
return self.url_result(ustream_url, UstreamIE.ie_key()) |
|
|
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 |
|
|
# 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')] |
|
|
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))) |
|
|
results = list(filter(None, (re.search(p, webpage) for p in patterns))) |
|
|