mirror of
				https://gitlab.com/ytdl-org/youtube-dl.git
				synced 2025-10-31 16:02:23 -04:00 
			
		
		
		
	[vimeo:channel] Improve playlist extraction
This commit is contained in:
		| @@ -146,7 +146,7 @@ class VimeoIE(VimeoBaseInfoExtractor): | ||||
|                             \. | ||||
|                         )? | ||||
|                         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', | ||||
|             'only_matching': True, | ||||
|         }, | ||||
|         { | ||||
|             'url': 'https://vimeo.com/album/2632481/video/79010983', | ||||
|             'only_matching': True, | ||||
|         }, | ||||
|         { | ||||
|             # source file returns 403: Forbidden | ||||
|             'url': 'https://vimeo.com/7809605', | ||||
| @@ -651,8 +655,21 @@ class VimeoChannelIE(VimeoBaseInfoExtractor): | ||||
|                 webpage = self._login_list_password(page_url, list_id, 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: | ||||
|                 break | ||||
| @@ -689,7 +706,7 @@ class VimeoUserIE(VimeoChannelIE): | ||||
|  | ||||
| class VimeoAlbumIE(VimeoChannelIE): | ||||
|     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>' | ||||
|     _TESTS = [{ | ||||
|         'url': 'https://vimeo.com/album/2632481', | ||||
|   | ||||
		Reference in New Issue
	
	Block a user