|
|
@ -127,25 +127,28 @@ class BrightcoveIE(InfoExtractor):
|
|
|
|
|
|
|
|
|
|
|
|
@classmethod
|
|
|
|
@classmethod
|
|
|
|
def _extract_brightcove_url(cls, webpage):
|
|
|
|
def _extract_brightcove_url(cls, webpage):
|
|
|
|
"""Try to extract the brightcove url from the wepbage, returns None
|
|
|
|
"""Try to extract the brightcove url from the webpage, returns None
|
|
|
|
if it can't be found
|
|
|
|
if it can't be found
|
|
|
|
"""
|
|
|
|
"""
|
|
|
|
|
|
|
|
urls = cls._extract_brightcove_urls(webpage)
|
|
|
|
|
|
|
|
return urls[0] if urls else None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@classmethod
|
|
|
|
|
|
|
|
def _extract_brightcove_urls(cls, webpage):
|
|
|
|
|
|
|
|
"""Return a list of all Brightcove URLs from the webpage """
|
|
|
|
|
|
|
|
|
|
|
|
url_m = re.search(r'<meta\s+property="og:video"\s+content="(http://c.brightcove.com/[^"]+)"', webpage)
|
|
|
|
url_m = re.search(r'<meta\s+property="og:video"\s+content="(http://c.brightcove.com/[^"]+)"', webpage)
|
|
|
|
if url_m:
|
|
|
|
if url_m:
|
|
|
|
return url_m.group(1)
|
|
|
|
return [url_m.group(1)]
|
|
|
|
|
|
|
|
|
|
|
|
m_brightcove = re.search(
|
|
|
|
matches = re.findall(
|
|
|
|
r'''(?sx)<object
|
|
|
|
r'''(?sx)<object
|
|
|
|
(?:
|
|
|
|
(?:
|
|
|
|
[^>]+?class=([\'"])[^>]*?BrightcoveExperience.*?\1 |
|
|
|
|
[^>]+?class=[\'"][^>]*?BrightcoveExperience.*?[\'"] |
|
|
|
|
[^>]*?>\s*<param\s+name="movie"\s+value="https?://[^/]*brightcove\.com/
|
|
|
|
[^>]*?>\s*<param\s+name="movie"\s+value="https?://[^/]*brightcove\.com/
|
|
|
|
).+?</object>''',
|
|
|
|
).+?</object>''',
|
|
|
|
webpage)
|
|
|
|
webpage)
|
|
|
|
if m_brightcove is not None:
|
|
|
|
return [cls._build_brighcove_url(m) for m in matches]
|
|
|
|
return cls._build_brighcove_url(m_brightcove.group())
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
return None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _real_extract(self, url):
|
|
|
|
def _real_extract(self, url):
|
|
|
|
url, smuggled_data = unsmuggle_url(url, {})
|
|
|
|
url, smuggled_data = unsmuggle_url(url, {})
|
|
|
|