mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-30 22:25:19 +00:00 
			
		
		
		
	[vimeo] Move all testcases to extractors and clean up
Previously, these extractors all defined their own suitable methods. No test_all_urls tests that everything is in order, automatically :)
This commit is contained in:
		| @@ -57,6 +57,7 @@ class VimeoIE(VimeoBaseInfoExtractor, SubtitlesInfoExtractor): | ||||
|         (?P<proto>(?:https?:)?//)? | ||||
|         (?:(?:www|(?P<player>player))\.)? | ||||
|         vimeo(?P<pro>pro)?\.com/ | ||||
|         (?!channels/[^/?#]+/?(?:$|[?#])|album/) | ||||
|         (?:.*?/)? | ||||
|         (?:(?:play_redirect_hls|moogaloop\.swf)\?clip_id=)? | ||||
|         (?:videos?/)? | ||||
| @@ -153,15 +154,6 @@ class VimeoIE(VimeoBaseInfoExtractor, SubtitlesInfoExtractor): | ||||
|         }, | ||||
|     ] | ||||
|  | ||||
|     @classmethod | ||||
|     def suitable(cls, url): | ||||
|         if VimeoChannelIE.suitable(url): | ||||
|             # Otherwise channel urls like http://vimeo.com/channels/31259 would | ||||
|             # match | ||||
|             return False | ||||
|         else: | ||||
|             return super(VimeoIE, cls).suitable(url) | ||||
|  | ||||
|     def _verify_video_password(self, url, video_id, webpage): | ||||
|         password = self._downloader.params.get('videopassword', None) | ||||
|         if password is None: | ||||
| @@ -380,9 +372,16 @@ class VimeoIE(VimeoBaseInfoExtractor, SubtitlesInfoExtractor): | ||||
|  | ||||
| class VimeoChannelIE(InfoExtractor): | ||||
|     IE_NAME = 'vimeo:channel' | ||||
|     _VALID_URL = r'(?:https?://)?vimeo\.com/channels/(?P<id>[^/]+)/?(\?.*)?$' | ||||
|     _VALID_URL = r'https?://vimeo\.com/channels/(?P<id>[^/?#]+)/?(?:$|[?#])' | ||||
|     _MORE_PAGES_INDICATOR = r'<a.+?rel="next"' | ||||
|     _TITLE_RE = r'<link rel="alternate"[^>]+?title="(.*?)"' | ||||
|     _TESTS = [{ | ||||
|         'url': 'http://vimeo.com/channels/tributes', | ||||
|         'info_dict': { | ||||
|             'title': 'Vimeo Tributes', | ||||
|         }, | ||||
|         'playlist_mincount': 25, | ||||
|     }] | ||||
|  | ||||
|     def _page_url(self, base_url, pagenum): | ||||
|         return '%s/videos/page:%d/' % (base_url, pagenum) | ||||
| @@ -416,14 +415,15 @@ class VimeoChannelIE(InfoExtractor): | ||||
|  | ||||
| class VimeoUserIE(VimeoChannelIE): | ||||
|     IE_NAME = 'vimeo:user' | ||||
|     _VALID_URL = r'(?:https?://)?vimeo\.com/(?P<name>[^/]+)(?:/videos|[#?]|$)' | ||||
|     _VALID_URL = r'https?://vimeo\.com/(?![0-9]+(?:$|[?#/]))(?P<name>[^/]+)(?:/videos|[#?]|$)' | ||||
|     _TITLE_RE = r'<a[^>]+?class="user">([^<>]+?)</a>' | ||||
|  | ||||
|     @classmethod | ||||
|     def suitable(cls, url): | ||||
|         if VimeoChannelIE.suitable(url) or VimeoIE.suitable(url) or VimeoAlbumIE.suitable(url) or VimeoGroupsIE.suitable(url): | ||||
|             return False | ||||
|         return super(VimeoUserIE, cls).suitable(url) | ||||
|     _TESTS = [{ | ||||
|         'url': 'http://vimeo.com/nkistudio/videos', | ||||
|         'info_dict': { | ||||
|             'title': 'Nki', | ||||
|         }, | ||||
|         'playlist_mincount': 66, | ||||
|     }] | ||||
|  | ||||
|     def _real_extract(self, url): | ||||
|         mobj = re.match(self._VALID_URL, url) | ||||
| @@ -433,8 +433,15 @@ 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': 'http://vimeo.com/album/2632481', | ||||
|         'info_dict': { | ||||
|             'title': 'Staff Favorites: November 2013', | ||||
|         }, | ||||
|         'playlist_mincount': 13, | ||||
|     }] | ||||
|  | ||||
|     def _page_url(self, base_url, pagenum): | ||||
|         return '%s/page:%d/' % (base_url, pagenum) | ||||
| @@ -448,6 +455,13 @@ class VimeoAlbumIE(VimeoChannelIE): | ||||
| class VimeoGroupsIE(VimeoAlbumIE): | ||||
|     IE_NAME = 'vimeo:group' | ||||
|     _VALID_URL = r'(?:https?://)?vimeo\.com/groups/(?P<name>[^/]+)' | ||||
|     _TESTS = [{ | ||||
|         'url': 'http://vimeo.com/groups/rolexawards', | ||||
|         'info_dict': { | ||||
|             'title': 'Rolex Awards for Enterprise', | ||||
|         }, | ||||
|         'playlist_mincount': 73, | ||||
|     }] | ||||
|  | ||||
|     def _extract_list_title(self, webpage): | ||||
|         return self._og_search_title(webpage) | ||||
| @@ -497,6 +511,10 @@ class VimeoWatchLaterIE(VimeoBaseInfoExtractor, VimeoChannelIE): | ||||
|     _VALID_URL = r'https?://vimeo\.com/home/watchlater|:vimeowatchlater' | ||||
|     _LOGIN_REQUIRED = True | ||||
|     _TITLE_RE = r'href="/home/watchlater".*?>(.*?)<' | ||||
|     _TESTS = [{ | ||||
|         'url': 'http://vimeo.com/home/watchlater', | ||||
|         'only_matching': True, | ||||
|     }] | ||||
|  | ||||
|     def _real_initialize(self): | ||||
|         self._login() | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Philipp Hagemeister
					Philipp Hagemeister