[vimeo] Fix and use '_verify_video_password' (#5001)

It only supports verifying the password over https now.

Use it instead of manually setting the 'password' cookie because it allows to check if the password is correct.
pull/5125/head
Jaime Marquínez Ferrándiz 10 years ago
parent 3c6f245083
commit 9c85b5376d

@ -4,7 +4,6 @@ from __future__ import unicode_literals
import json import json
import re import re
import itertools import itertools
import hashlib
from .common import InfoExtractor from .common import InfoExtractor
from ..compat import ( from ..compat import (
@ -178,17 +177,15 @@ class VimeoIE(VimeoBaseInfoExtractor):
password = self._downloader.params.get('videopassword', None) password = self._downloader.params.get('videopassword', None)
if password is None: if password is None:
raise ExtractorError('This video is protected by a password, use the --video-password option', expected=True) raise ExtractorError('This video is protected by a password, use the --video-password option', expected=True)
token = self._search_regex(r'xsrft: \'(.*?)\'', webpage, 'login token') token = self._search_regex(r'xsrft = \'(.*?)\'', webpage, 'login token')
data = compat_urllib_parse.urlencode({ data = urlencode_postdata({
'password': password, 'password': password,
'token': token, 'token': token,
}) })
# I didn't manage to use the password with https if url.startswith('http://'):
if url.startswith('https'): # vimeo only supports https now, but the user can give an http url
pass_url = url.replace('https', 'http') url = url.replace('http://', 'https://')
else: password_request = compat_urllib_request.Request(url + '/password', data)
pass_url = url
password_request = compat_urllib_request.Request(pass_url + '/password', data)
password_request.add_header('Content-Type', 'application/x-www-form-urlencoded') password_request.add_header('Content-Type', 'application/x-www-form-urlencoded')
password_request.add_header('Cookie', 'xsrft=%s' % token) password_request.add_header('Cookie', 'xsrft=%s' % token)
return self._download_webpage( return self._download_webpage(
@ -227,11 +224,6 @@ class VimeoIE(VimeoBaseInfoExtractor):
if mobj.group('pro') or mobj.group('player'): if mobj.group('pro') or mobj.group('player'):
url = 'http://player.vimeo.com/video/' + video_id url = 'http://player.vimeo.com/video/' + video_id
password = self._downloader.params.get('videopassword', None)
if password:
headers['Cookie'] = '%s_password=%s' % (
video_id, hashlib.md5(password.encode('utf-8')).hexdigest())
# Retrieve video webpage to extract further information # Retrieve video webpage to extract further information
request = compat_urllib_request.Request(url, None, headers) request = compat_urllib_request.Request(url, None, headers)
try: try:

Loading…
Cancel
Save