diff options
author | Sergey M․ <dstftw@gmail.com> | 2017-12-30 03:54:14 +0700 |
---|---|---|
committer | Sergey M․ <dstftw@gmail.com> | 2017-12-30 03:54:14 +0700 |
commit | 580f3c79d52ae3f880b4ca64e22665bf094ae65f (patch) | |
tree | d159ba4c9c478e2aded41e138899cf577ba613e3 | |
parent | 9d6ac71c27b1dfb662c795ef598dbfd0286682da (diff) | |
download | youtube-dl-580f3c79d52ae3f880b4ca64e22665bf094ae65f.zip youtube-dl-580f3c79d52ae3f880b4ca64e22665bf094ae65f.tar.gz youtube-dl-580f3c79d52ae3f880b4ca64e22665bf094ae65f.tar.bz2 |
[vimeo] Improve password protected videos extraction (closes #15114)
-rw-r--r-- | youtube_dl/extractor/vimeo.py | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/youtube_dl/extractor/vimeo.py b/youtube_dl/extractor/vimeo.py index cedb548..6af7056 100644 --- a/youtube_dl/extractor/vimeo.py +++ b/youtube_dl/extractor/vimeo.py @@ -468,11 +468,12 @@ class VimeoIE(VimeoBaseInfoExtractor): request = sanitized_Request(url, headers=headers) try: webpage, urlh = self._download_webpage_handle(request, video_id) + redirect_url = compat_str(urlh.geturl()) # Some URLs redirect to ondemand can't be extracted with # this extractor right away thus should be passed through # ondemand extractor (e.g. https://vimeo.com/73445910) - if VimeoOndemandIE.suitable(urlh.geturl()): - return self.url_result(urlh.geturl(), VimeoOndemandIE.ie_key()) + if VimeoOndemandIE.suitable(redirect_url): + return self.url_result(redirect_url, VimeoOndemandIE.ie_key()) except ExtractorError as ee: if isinstance(ee.cause, compat_HTTPError) and ee.cause.code == 403: errmsg = ee.cause.read() @@ -541,15 +542,15 @@ class VimeoIE(VimeoBaseInfoExtractor): if re.search(r'<form[^>]+?id="pw_form"', webpage) is not None: if '_video_password_verified' in data: raise ExtractorError('video password verification failed!') - self._verify_video_password(url, video_id, webpage) + self._verify_video_password(redirect_url, video_id, webpage) return self._real_extract( - smuggle_url(url, {'_video_password_verified': 'verified'})) + smuggle_url(redirect_url, {'_video_password_verified': 'verified'})) else: raise ExtractorError('Unable to extract info section', cause=e) else: if config.get('view') == 4: - config = self._verify_player_video_password(url, video_id) + config = self._verify_player_video_password(redirect_url, video_id) def is_rented(): if '>You rented this title.<' in webpage: |