|
@ -19,7 +19,7 @@ from ..utils import ( |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class UstreamIE(InfoExtractor): |
|
|
class UstreamIE(InfoExtractor): |
|
|
_VALID_URL = r'https?://(?:www\.)?ustream\.tv/(?P<type>recorded|embed|embed/recorded)/(?P<id>\d+)' |
|
|
|
|
|
|
|
|
_VALID_URL = r'https?://(?:www\.)?(?:ustream\.tv|video\.ibm\.com)/(?P<type>recorded|embed|embed/recorded)/(?P<id>\d+)' |
|
|
IE_NAME = 'ustream' |
|
|
IE_NAME = 'ustream' |
|
|
_TESTS = [{ |
|
|
_TESTS = [{ |
|
|
'url': 'http://www.ustream.tv/recorded/20274954', |
|
|
'url': 'http://www.ustream.tv/recorded/20274954', |
|
@ -67,12 +67,15 @@ class UstreamIE(InfoExtractor): |
|
|
'params': { |
|
|
'params': { |
|
|
'skip_download': True, # m3u8 download |
|
|
'skip_download': True, # m3u8 download |
|
|
}, |
|
|
}, |
|
|
|
|
|
}, { |
|
|
|
|
|
'url': 'https://video.ibm.com/embed/recorded/128240221?&autoplay=true&controls=true&volume=100', |
|
|
|
|
|
'only_matching': True, |
|
|
}] |
|
|
}] |
|
|
|
|
|
|
|
|
@staticmethod |
|
|
@staticmethod |
|
|
def _extract_url(webpage): |
|
|
def _extract_url(webpage): |
|
|
mobj = re.search( |
|
|
mobj = re.search( |
|
|
r'<iframe[^>]+?src=(["\'])(?P<url>http://www\.ustream\.tv/embed/.+?)\1', webpage) |
|
|
|
|
|
|
|
|
r'<iframe[^>]+?src=(["\'])(?P<url>http://(?:www\.)?(?:ustream\.tv|video\.ibm\.com)/embed/.+?)\1', webpage) |
|
|
if mobj is not None: |
|
|
if mobj is not None: |
|
|
return mobj.group('url') |
|
|
return mobj.group('url') |
|
|
|
|
|
|
|
|