[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:
		@@ -87,38 +87,6 @@ class TestPlaylists(unittest.TestCase):
 | 
			
		||||
        assertGreaterEqual(self, len(result['entries']), 100)
 | 
			
		||||
        self.assertEqual(result['title'], 'Rémi Gaillard')
 | 
			
		||||
 | 
			
		||||
    def test_vimeo_channel(self):
 | 
			
		||||
        dl = FakeYDL()
 | 
			
		||||
        ie = VimeoChannelIE(dl)
 | 
			
		||||
        result = ie.extract('http://vimeo.com/channels/tributes')
 | 
			
		||||
        self.assertIsPlaylist(result)
 | 
			
		||||
        self.assertEqual(result['title'], 'Vimeo Tributes')
 | 
			
		||||
        self.assertTrue(len(result['entries']) > 24)
 | 
			
		||||
 | 
			
		||||
    def test_vimeo_user(self):
 | 
			
		||||
        dl = FakeYDL()
 | 
			
		||||
        ie = VimeoUserIE(dl)
 | 
			
		||||
        result = ie.extract('http://vimeo.com/nkistudio/videos')
 | 
			
		||||
        self.assertIsPlaylist(result)
 | 
			
		||||
        self.assertEqual(result['title'], 'Nki')
 | 
			
		||||
        self.assertTrue(len(result['entries']) > 65)
 | 
			
		||||
 | 
			
		||||
    def test_vimeo_album(self):
 | 
			
		||||
        dl = FakeYDL()
 | 
			
		||||
        ie = VimeoAlbumIE(dl)
 | 
			
		||||
        result = ie.extract('http://vimeo.com/album/2632481')
 | 
			
		||||
        self.assertIsPlaylist(result)
 | 
			
		||||
        self.assertEqual(result['title'], 'Staff Favorites: November 2013')
 | 
			
		||||
        self.assertTrue(len(result['entries']) > 12)
 | 
			
		||||
 | 
			
		||||
    def test_vimeo_groups(self):
 | 
			
		||||
        dl = FakeYDL()
 | 
			
		||||
        ie = VimeoGroupsIE(dl)
 | 
			
		||||
        result = ie.extract('http://vimeo.com/groups/rolexawards')
 | 
			
		||||
        self.assertIsPlaylist(result)
 | 
			
		||||
        self.assertEqual(result['title'], 'Rolex Awards for Enterprise')
 | 
			
		||||
        self.assertTrue(len(result['entries']) > 72)
 | 
			
		||||
 | 
			
		||||
    def test_vine_user(self):
 | 
			
		||||
        dl = FakeYDL()
 | 
			
		||||
        ie = VineUserIE(dl)
 | 
			
		||||
 
 | 
			
		||||
@@ -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