X-Git-Url: http://git.cielonegro.org/gitweb.cgi?a=blobdiff_plain;f=youtube_dl%2Fextractor%2Fvimeo.py;h=1936755499ceca890c7b4513298a64444293b71d;hb=cd8a562267762933a0890c84457fd19dc5a42936;hp=81c495d1e713d5190020d3966f36ed2c16e055d5;hpb=48a203467179b93e382a2ca08f4ccd13bc7d486e;p=youtube-dl.git diff --git a/youtube_dl/extractor/vimeo.py b/youtube_dl/extractor/vimeo.py index 81c495d1e..193675549 100644 --- a/youtube_dl/extractor/vimeo.py +++ b/youtube_dl/extractor/vimeo.py @@ -24,7 +24,7 @@ class VimeoIE(InfoExtractor): # _VALID_URL matches Vimeo URLs _VALID_URL = r'''(?x) - (?Phttps?://)? + (?P(?:https?:)?//)? (?:(?:www|(?Pplayer))\.)? vimeo(?Ppro)?\.com/ (?:.*?/)? @@ -124,6 +124,19 @@ class VimeoIE(InfoExtractor): '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() @@ -136,9 +149,6 @@ class VimeoIE(InfoExtractor): # 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 @@ -184,8 +194,7 @@ class VimeoIE(InfoExtractor): 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"]