|
@@ -355,23 +355,27 @@ class VimeoIE(VimeoBaseInfoExtractor):
|
|
|
return smuggle_url(url, {'http_headers': {'Referer': referrer_url}})
|
|
|
|
|
|
@staticmethod
|
|
|
- def _extract_vimeo_url(url, webpage):
|
|
|
+ def _extract_urls(url, webpage):
|
|
|
+ urls = []
|
|
|
# Look for embedded (iframe) Vimeo player
|
|
|
- mobj = re.search(
|
|
|
- r'<iframe[^>]+?src=(["\'])(?P<url>(?:https?:)?//player\.vimeo\.com/video/.+?)\1', webpage)
|
|
|
- if mobj:
|
|
|
- player_url = unescapeHTML(mobj.group('url'))
|
|
|
- return VimeoIE._smuggle_referrer(player_url, url)
|
|
|
- # Look for embedded (swf embed) Vimeo player
|
|
|
- mobj = re.search(
|
|
|
- r'<embed[^>]+?src="((?:https?:)?//(?:www\.)?vimeo\.com/moogaloop\.swf.+?)"', webpage)
|
|
|
- if mobj:
|
|
|
- return mobj.group(1)
|
|
|
- # Look more for non-standard embedded Vimeo player
|
|
|
- mobj = re.search(
|
|
|
- r'<video[^>]+src=(?P<q1>[\'"])(?P<url>(?:https?:)?//(?:www\.)?vimeo\.com/[0-9]+)(?P=q1)', webpage)
|
|
|
- if mobj:
|
|
|
- return mobj.group('url')
|
|
|
+ for mobj in re.finditer(
|
|
|
+ r'<iframe[^>]+?src=(["\'])(?P<url>(?:https?:)?//player\.vimeo\.com/video/.+?)\1', webpage):
|
|
|
+ urls.append(VimeoIE._smuggle_referrer(unescapeHTML(mobj.group('url')), url))
|
|
|
+ PLAIN_EMBED_RE = (
|
|
|
+ # Look for embedded (swf embed) Vimeo player
|
|
|
+ r'<embed[^>]+?src=(["\'])(?P<url>(?:https?:)?//(?:www\.)?vimeo\.com/moogaloop\.swf.+?)\1',
|
|
|
+ # Look more for non-standard embedded Vimeo player
|
|
|
+ r'<video[^>]+src=(["\'])(?P<url>(?:https?:)?//(?:www\.)?vimeo\.com/[0-9]+)\1',
|
|
|
+ )
|
|
|
+ for embed_re in PLAIN_EMBED_RE:
|
|
|
+ for mobj in re.finditer(embed_re, webpage):
|
|
|
+ urls.append(mobj.group('url'))
|
|
|
+ return urls
|
|
|
+
|
|
|
+ @staticmethod
|
|
|
+ def _extract_url(url, webpage):
|
|
|
+ urls = VimeoIE._extract_urls(url, webpage)
|
|
|
+ return urls[0] if urls else None
|
|
|
|
|
|
def _verify_player_video_password(self, url, video_id):
|
|
|
password = self._downloader.params.get('videopassword')
|