aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey M․ <dstftw@gmail.com>2016-10-23 18:48:50 +0700
committerSergey M․ <dstftw@gmail.com>2016-10-23 18:48:50 +0700
commitf16f8505b18eb618aa830f21d6b97152e602dfb9 (patch)
tree614955de57beee662a088ca3ed696c5dc4a5d8ac
parent9dc13a67807fd38070d95cb23deca3761476e9de (diff)
downloadyoutube-dl-f16f8505b18eb618aa830f21d6b97152e602dfb9.tar.xz
[vimeo] Delegate ondemand redirects to ondemand extractor (closes #10994)
-rw-r--r--youtube_dl/extractor/vimeo.py23
1 files changed, 22 insertions, 1 deletions
diff --git a/youtube_dl/extractor/vimeo.py b/youtube_dl/extractor/vimeo.py
index b566241cc..51c69a80c 100644
--- a/youtube_dl/extractor/vimeo.py
+++ b/youtube_dl/extractor/vimeo.py
@@ -323,6 +323,22 @@ class VimeoIE(VimeoBaseInfoExtractor):
'expected_warnings': ['Unable to download JSON metadata'],
},
{
+ # redirects to ondemand extractor and should be passed throught it
+ # for successful extraction
+ 'url': 'https://vimeo.com/73445910',
+ 'info_dict': {
+ 'id': '73445910',
+ 'ext': 'mp4',
+ 'title': 'The Reluctant Revolutionary',
+ 'uploader': '10Ft Films',
+ 'uploader_url': 're:https?://(?:www\.)?vimeo\.com/tenfootfilms',
+ 'uploader_id': 'tenfootfilms',
+ },
+ 'params': {
+ 'skip_download': True,
+ },
+ },
+ {
'url': 'http://vimeo.com/moogaloop.swf?clip_id=2539741',
'only_matching': True,
},
@@ -414,7 +430,12 @@ class VimeoIE(VimeoBaseInfoExtractor):
# Retrieve video webpage to extract further information
request = sanitized_Request(url, headers=headers)
try:
- webpage = self._download_webpage(request, video_id)
+ webpage, urlh = self._download_webpage_handle(request, video_id)
+ # 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())
except ExtractorError as ee:
if isinstance(ee.cause, compat_HTTPError) and ee.cause.code == 403:
errmsg = ee.cause.read()