from .common import InfoExtractor
from ..compat import compat_parse_qs
from ..utils import (
- determine_ext,
ExtractorError,
+ determine_ext,
get_element_by_class,
int_or_none,
lowercase_escape,
video_id = self._match_id(url)
video_info = compat_parse_qs(self._download_webpage(
'https://drive.google.com/get_video_info',
- video_id, query={'docid': video_id}))
+ video_id, 'Downloading video webpage', query={'docid': video_id}))
def get_value(key):
return try_get(video_info, lambda x: x[key][0])
reason = get_value('reason')
title = get_value('title')
- if not title and reason:
- raise ExtractorError(reason, expected=True)
formats = []
fmt_stream_map = (get_value('fmt_stream_map') or '').split(',')
urlh = request_source_file(source_url, 'source')
if urlh:
def add_source_format(urlh):
+ nonlocal title
+ if not title:
+ title = self._search_regex(
+ r'\bfilename="([^"]+)"', urlh.headers.get('Content-Disposition'),
+ 'title', default=None)
formats.append({
# Use redirect URLs as download URLs in order to calculate
# correct cookies in _calc_cookies.
or 'unable to extract confirmation code')
if not formats and reason:
- self.raise_no_formats(reason, expected=True)
+ if title:
+ self.raise_no_formats(reason, expected=True)
+ else:
+ raise ExtractorError(reason, expected=True)
hl = get_value('hl')
subtitles_id = None