[vimeo] fix the extraction for videos protected with password

Added a test video.
This commit is contained in:
Jaime Marquínez Ferrándiz 2013-10-23 16:31:53 +02:00
parent 0a89b2852e
commit 93b22c7828

View File

@ -1,3 +1,4 @@
# encoding: utf-8
import json import json
import re import re
import itertools import itertools
@ -55,7 +56,22 @@ class VimeoIE(InfoExtractor):
u'title': u'Kathy Sierra: Building the minimum Badass User, Business of Software', u'title': u'Kathy Sierra: Building the minimum Badass User, Business of Software',
u'uploader': u'The BLN & Business of Software', u'uploader': u'The BLN & Business of Software',
}, },
} },
{
u'url': u'http://vimeo.com/68375962',
u'file': u'68375962.mp4',
u'md5': u'aaf896bdb7ddd6476df50007a0ac0ae7',
u'note': u'Video protected with password',
u'info_dict': {
u'title': u'youtube-dl password protected test video',
u'upload_date': u'20130614',
u'uploader_id': u'user18948128',
u'uploader': u'Jaime Marquínez Ferrándiz',
},
u'params': {
u'videopassword': u'youtube-dl',
},
},
] ]
def _login(self): def _login(self):
@ -130,20 +146,21 @@ def _real_extract(self, url, new_video=True):
# Extract the config JSON # Extract the config JSON
try: try:
config_url = self._html_search_regex( try:
r' data-config-url="(.+?)"', webpage, u'config URL') config_url = self._html_search_regex(
config_json = self._download_webpage(config_url, video_id) r' data-config-url="(.+?)"', webpage, u'config URL')
config = json.loads(config_json) config_json = self._download_webpage(config_url, video_id)
except RegexNotFoundError: config = json.loads(config_json)
# For pro videos or player.vimeo.com urls except RegexNotFoundError:
config = self._search_regex([r' = {config:({.+?}),assets:', r'c=({.+?);'], # For pro videos or player.vimeo.com urls
webpage, u'info section', flags=re.DOTALL) config = self._search_regex([r' = {config:({.+?}),assets:', r'c=({.+?);'],
config = json.loads(config) webpage, u'info section', flags=re.DOTALL)
config = json.loads(config)
except Exception as e: except Exception as e:
if re.search('The creator of this video has not given you permission to embed it on this domain.', webpage): if re.search('The creator of this video has not given you permission to embed it on this domain.', webpage):
raise ExtractorError(u'The author has restricted the access to this video, try with the "--referer" option') raise ExtractorError(u'The author has restricted the access to this video, try with the "--referer" option')
if re.search('If so please provide the correct password.', webpage): if re.search('<form[^>]+?id="pw_form"', webpage) is not None:
self._verify_video_password(url, video_id, webpage) self._verify_video_password(url, video_id, webpage)
return self._real_extract(url) return self._real_extract(url)
else: else: