- _VALID_URL = r'(?:https?://)?vine\.co/(?P<user>[^/]+)/?(\?.*)?$'
- _VINE_BASE_URL = "https://vine.co/"
-
- def _profile_url(self, user):
- return "%sapi/users/profiles/vanity/%s"%(self._VINE_BASE_URL, user)
-
- def _timeline_url(self, user_id, page=1):
- return "%sapi/timelines/users/%s?page=%s"%(self._VINE_BASE_URL, user_id, page)
-
- def _profile_data(self, user):
- return self._download_json(self._profile_url(user), user)
-
- def _timeline_data(self, user):
- profile_data = self._profile_data(user)
- user_id = profile_data['data']['userId']
- timeline_data = []
- for pagenum in itertools.count(1):
- timeline_page = self._download_json(self._timeline_url(user_id, pagenum), user)
- timeline_data.extend(timeline_page['data']['records'])
- if timeline_page['data']['nextPage'] is None:
- break
- return timeline_data
-
- def _extract_videos(self, user):
- timeline_data = self._timeline_data(user)
- entries = [self.url_result(e['permalinkUrl'], 'Vine') for e in timeline_data]
- return self.playlist_result(entries, user)
+ _VALID_URL = r'https?://vine\.co/(?P<u>u/)?(?P<user>[^/]+)'
+ _VINE_BASE_URL = 'https://vine.co/'
+ _TESTS = [{
+ 'url': 'https://vine.co/itsruthb',
+ 'info_dict': {
+ 'id': 'itsruthb',
+ 'title': 'Ruth B',
+ 'description': '| Instagram/Twitter: itsruthb | still a lost boy from neverland',
+ },
+ 'playlist_mincount': 611,
+ }, {
+ 'url': 'https://vine.co/u/942914934646415360',
+ 'only_matching': True,
+ }]
+
+ @classmethod
+ def suitable(cls, url):
+ return False if VineIE.suitable(url) else super(VineUserIE, cls).suitable(url)