# _VALID_URL matches Vimeo URLs
_VALID_URL = r'''(?x)
- (?P<proto>https?://)?
+ (?P<proto>(?:https?:)?//)?
(?:(?:www|(?P<player>player))\.)?
vimeo(?P<pro>pro)?\.com/
(?:.*?/)?
'Verifying the password',
'Wrong password')
+ def _verify_player_video_password(self, url, video_id):
+ password = self._downloader.params.get('videopassword', None)
+ if password is None:
+ raise ExtractorError('This video is protected by a password, use the --video-password option')
+ data = compat_urllib_parse.urlencode({'password': password})
+ pass_url = url + '/check-password'
+ password_request = compat_urllib_request.Request(pass_url, data)
+ password_request.add_header('Content-Type', 'application/x-www-form-urlencoded')
+ return self._download_json(
+ password_request, video_id,
+ 'Verifying the password',
+ 'Wrong password')
+
def _real_initialize(self):
self._login()
# Extract ID from URL
mobj = re.match(self._VALID_URL, url)
- if mobj is None:
- raise ExtractorError('Invalid URL: %s' % url)
-
video_id = mobj.group('id')
if mobj.group('pro') or mobj.group('player'):
url = 'http://player.vimeo.com/video/' + video_id
cause=e)
else:
if config.get('view') == 4:
- self._verify_video_password(url, video_id, webpage)
- return self._real_extract(url)
+ config = self._verify_player_video_password(url, video_id)
# Extract title
video_title = config["video"]["title"]