|
@ -146,7 +146,7 @@ class VimeoIE(VimeoBaseInfoExtractor): |
|
|
\. |
|
|
\. |
|
|
)? |
|
|
)? |
|
|
vimeo(?P<pro>pro)?\.com/ |
|
|
vimeo(?P<pro>pro)?\.com/ |
|
|
(?!channels/[^/?#]+/?(?:$|[?#])|[^/]+/review/|(?:album|ondemand)/) |
|
|
|
|
|
|
|
|
(?!(?:channels|album)/[^/?#]+/?(?:$|[?#])|[^/]+/review/|ondemand/) |
|
|
(?:.*?/)? |
|
|
(?:.*?/)? |
|
|
(?: |
|
|
(?: |
|
|
(?: |
|
|
(?: |
|
@ -314,6 +314,10 @@ class VimeoIE(VimeoBaseInfoExtractor): |
|
|
'url': 'https://vimeo.com/groups/travelhd/videos/22439234', |
|
|
'url': 'https://vimeo.com/groups/travelhd/videos/22439234', |
|
|
'only_matching': True, |
|
|
'only_matching': True, |
|
|
}, |
|
|
}, |
|
|
|
|
|
{ |
|
|
|
|
|
'url': 'https://vimeo.com/album/2632481/video/79010983', |
|
|
|
|
|
'only_matching': True, |
|
|
|
|
|
}, |
|
|
{ |
|
|
{ |
|
|
# source file returns 403: Forbidden |
|
|
# source file returns 403: Forbidden |
|
|
'url': 'https://vimeo.com/7809605', |
|
|
'url': 'https://vimeo.com/7809605', |
|
@ -651,8 +655,21 @@ class VimeoChannelIE(VimeoBaseInfoExtractor): |
|
|
webpage = self._login_list_password(page_url, list_id, webpage) |
|
|
webpage = self._login_list_password(page_url, list_id, webpage) |
|
|
yield self._extract_list_title(webpage) |
|
|
yield self._extract_list_title(webpage) |
|
|
|
|
|
|
|
|
for video_id in re.findall(r'id="clip_(\d+?)"', webpage): |
|
|
|
|
|
yield self.url_result('https://vimeo.com/%s' % video_id, 'Vimeo', video_id=video_id) |
|
|
|
|
|
|
|
|
# Try extracting href first since not all videos are available via |
|
|
|
|
|
# short https://vimeo.com/id URL (e.g. https://vimeo.com/channels/tributes/6213729) |
|
|
|
|
|
clips = re.findall( |
|
|
|
|
|
r'id="clip_(\d+)"[^>]*>\s*<a[^>]+href="(/(?:[^/]+/)*\1)', webpage) |
|
|
|
|
|
if clips: |
|
|
|
|
|
for video_id, video_url in clips: |
|
|
|
|
|
yield self.url_result( |
|
|
|
|
|
compat_urlparse.urljoin(base_url, video_url), |
|
|
|
|
|
VimeoIE.ie_key(), video_id=video_id) |
|
|
|
|
|
# More relaxed fallback |
|
|
|
|
|
else: |
|
|
|
|
|
for video_id in re.findall(r'id=["\']clip_(\d+)', webpage): |
|
|
|
|
|
yield self.url_result( |
|
|
|
|
|
'https://vimeo.com/%s' % video_id, |
|
|
|
|
|
VimeoIE.ie_key(), video_id=video_id) |
|
|
|
|
|
|
|
|
if re.search(self._MORE_PAGES_INDICATOR, webpage, re.DOTALL) is None: |
|
|
if re.search(self._MORE_PAGES_INDICATOR, webpage, re.DOTALL) is None: |
|
|
break |
|
|
break |
|
@ -689,7 +706,7 @@ class VimeoUserIE(VimeoChannelIE): |
|
|
|
|
|
|
|
|
class VimeoAlbumIE(VimeoChannelIE): |
|
|
class VimeoAlbumIE(VimeoChannelIE): |
|
|
IE_NAME = 'vimeo:album' |
|
|
IE_NAME = 'vimeo:album' |
|
|
_VALID_URL = r'https://vimeo\.com/album/(?P<id>\d+)' |
|
|
|
|
|
|
|
|
_VALID_URL = r'https://vimeo\.com/album/(?P<id>\d+)/?(?:$|[?#])' |
|
|
_TITLE_RE = r'<header id="page_header">\n\s*<h1>(.*?)</h1>' |
|
|
_TITLE_RE = r'<header id="page_header">\n\s*<h1>(.*?)</h1>' |
|
|
_TESTS = [{ |
|
|
_TESTS = [{ |
|
|
'url': 'https://vimeo.com/album/2632481', |
|
|
'url': 'https://vimeo.com/album/2632481', |
|
|