|
@ -45,22 +45,23 @@ class WistiaIE(InfoExtractor): |
|
|
# https://wistia.com/support/embed-and-share/video-on-your-website |
|
|
# https://wistia.com/support/embed-and-share/video-on-your-website |
|
|
@staticmethod |
|
|
@staticmethod |
|
|
def _extract_url(webpage): |
|
|
def _extract_url(webpage): |
|
|
match = re.search( |
|
|
|
|
|
r'<(?:meta[^>]+?content|(?:iframe|script)[^>]+?src)=["\'](?P<url>(?:https?:)?//(?:fast\.)?wistia\.(?:net|com)/embed/(?:iframe|medias)/[a-z0-9]{10})', webpage) |
|
|
|
|
|
if match: |
|
|
|
|
|
return unescapeHTML(match.group('url')) |
|
|
|
|
|
|
|
|
urls = WistiaIE._extract_urls(webpage) |
|
|
|
|
|
return urls[0] if urls else None |
|
|
|
|
|
|
|
|
match = re.search( |
|
|
|
|
|
r'''(?sx) |
|
|
|
|
|
<script[^>]+src=(["'])(?:https?:)?//fast\.wistia\.com/assets/external/E-v1\.js\1[^>]*>.*? |
|
|
|
|
|
<div[^>]+class=(["']).*?\bwistia_async_(?P<id>[a-z0-9]{10})\b.*?\2 |
|
|
|
|
|
''', webpage) |
|
|
|
|
|
if match: |
|
|
|
|
|
return 'wistia:%s' % match.group('id') |
|
|
|
|
|
|
|
|
|
|
|
match = re.search(r'(?:data-wistia-?id=["\']|Wistia\.embed\(["\']|id=["\']wistia_)(?P<id>[a-z0-9]{10})', webpage) |
|
|
|
|
|
if match: |
|
|
|
|
|
return 'wistia:%s' % match.group('id') |
|
|
|
|
|
|
|
|
@staticmethod |
|
|
|
|
|
def _extract_urls(webpage): |
|
|
|
|
|
urls = [] |
|
|
|
|
|
for match in re.finditer( |
|
|
|
|
|
r'<(?:meta[^>]+?content|(?:iframe|script)[^>]+?src)=["\'](?P<url>(?:https?:)?//(?:fast\.)?wistia\.(?:net|com)/embed/(?:iframe|medias)/[a-z0-9]{10})', webpage): |
|
|
|
|
|
urls.append(unescapeHTML(match.group('url'))) |
|
|
|
|
|
for match in re.finditer( |
|
|
|
|
|
r'''(?sx) |
|
|
|
|
|
<div[^>]+class=(["']).*?\bwistia_async_(?P<id>[a-z0-9]{10})\b.*?\2 |
|
|
|
|
|
''', webpage): |
|
|
|
|
|
urls.append('wistia:%s' % match.group('id')) |
|
|
|
|
|
for match in re.finditer(r'(?:data-wistia-?id=["\']|Wistia\.embed\(["\']|id=["\']wistia_)(?P<id>[a-z0-9]{10})', webpage): |
|
|
|
|
|
urls.append('wistia:%s' % match.group('id')) |
|
|
|
|
|
return urls |
|
|
|
|
|
|
|
|
def _real_extract(self, url): |
|
|
def _real_extract(self, url): |
|
|
video_id = self._match_id(url) |
|
|
video_id = self._match_id(url) |
|
|