mirror of
				https://gitlab.com/ytdl-org/youtube-dl.git
				synced 2025-11-04 01:27:07 -05: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