mirror of https://github.com/yt-dlp/yt-dlp.git
[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.
This commit is contained in:
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…
Reference in New Issue