|
|
@ -8,6 +8,7 @@ import itertools
|
|
|
|
from .common import InfoExtractor
|
|
|
|
from .common import InfoExtractor
|
|
|
|
from .subtitles import SubtitlesInfoExtractor
|
|
|
|
from .subtitles import SubtitlesInfoExtractor
|
|
|
|
from ..utils import (
|
|
|
|
from ..utils import (
|
|
|
|
|
|
|
|
compat_HTTPError,
|
|
|
|
compat_urllib_parse,
|
|
|
|
compat_urllib_parse,
|
|
|
|
compat_urllib_request,
|
|
|
|
compat_urllib_request,
|
|
|
|
clean_html,
|
|
|
|
clean_html,
|
|
|
@ -172,7 +173,18 @@ class VimeoIE(SubtitlesInfoExtractor):
|
|
|
|
|
|
|
|
|
|
|
|
# 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:
|
|
|
|
webpage = self._download_webpage(request, video_id)
|
|
|
|
webpage = self._download_webpage(request, video_id)
|
|
|
|
|
|
|
|
except ExtractorError as ee:
|
|
|
|
|
|
|
|
if isinstance(ee.cause, compat_HTTPError) and ee.cause.code == 403:
|
|
|
|
|
|
|
|
errmsg = ee.cause.read()
|
|
|
|
|
|
|
|
if b'Because of its privacy settings, this video cannot be played here' in errmsg:
|
|
|
|
|
|
|
|
raise ExtractorError(
|
|
|
|
|
|
|
|
'Cannot download embed-only video without embedding '
|
|
|
|
|
|
|
|
'URL. Please call youtube-dl with the URL of the page '
|
|
|
|
|
|
|
|
'that embeds this video.',
|
|
|
|
|
|
|
|
expected=True)
|
|
|
|
|
|
|
|
raise
|
|
|
|
|
|
|
|
|
|
|
|
# Now we begin extracting as much information as we can from what we
|
|
|
|
# Now we begin extracting as much information as we can from what we
|
|
|
|
# retrieved. First we extract the information common to all extractors,
|
|
|
|
# retrieved. First we extract the information common to all extractors,
|
|
|
|