projects
/
youtube-dl
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
95c9810
)
[googledrive] Use redirect URLs for source format (closes #18877, closes #23919,...
author
Sergey M․
<dstftw@gmail.com>
Sun, 13 Sep 2020 13:43:50 +0000
(20:43 +0700)
committer
Sergey M․
<dstftw@gmail.com>
Sun, 13 Sep 2020 13:49:32 +0000
(20:49 +0700)
youtube_dl/extractor/googledrive.py
patch
|
blob
|
history
diff --git
a/youtube_dl/extractor/googledrive.py
b/youtube_dl/extractor/googledrive.py
index 589e4d5c371480d590b504dd1a3738a858c80790..f2cc57e447660f2d047be5bc306aaa4397bbf6af 100644
(file)
--- a/
youtube_dl/extractor/googledrive.py
+++ b/
youtube_dl/extractor/googledrive.py
@@
-220,19
+220,27
@@
class GoogleDriveIE(InfoExtractor):
'id': video_id,
'export': 'download',
})
'id': video_id,
'export': 'download',
})
- urlh = self._request_webpage(
- source_url, video_id, note='Requesting source file',
- errnote='Unable to request source file', fatal=False)
+
+ def request_source_file(source_url, kind):
+ return self._request_webpage(
+ source_url, video_id, note='Requesting %s file' % kind,
+ errnote='Unable to request %s file' % kind, fatal=False)
+ urlh = request_source_file(source_url, 'source')
if urlh:
if urlh:
- def add_source_format(
src_url
):
+ def add_source_format(
urlh
):
formats.append({
formats.append({
- 'url': src_url,
+ # Use redirect URLs as download URLs in order to calculate
+ # correct cookies in _calc_cookies.
+ # Using original URLs may result in redirect loop due to
+ # google.com's cookies mistakenly used for googleusercontent.com
+ # redirect URLs (see #23919).
+ 'url': urlh.geturl(),
'ext': determine_ext(title, 'mp4').lower(),
'format_id': 'source',
'quality': 1,
})
if urlh.headers.get('Content-Disposition'):
'ext': determine_ext(title, 'mp4').lower(),
'format_id': 'source',
'quality': 1,
})
if urlh.headers.get('Content-Disposition'):
- add_source_format(
source_url
)
+ add_source_format(
urlh
)
else:
confirmation_webpage = self._webpage_read_content(
urlh, url, video_id, note='Downloading confirmation page',
else:
confirmation_webpage = self._webpage_read_content(
urlh, url, video_id, note='Downloading confirmation page',
@@
-242,9
+250,12
@@
class GoogleDriveIE(InfoExtractor):
r'confirm=([^&"\']+)', confirmation_webpage,
'confirmation code', fatal=False)
if confirm:
r'confirm=([^&"\']+)', confirmation_webpage,
'confirmation code', fatal=False)
if confirm:
-
add_source_format(
update_url_query(source_url, {
+
confirmed_source_url =
update_url_query(source_url, {
'confirm': confirm,
'confirm': confirm,
- }))
+ })
+ urlh = request_source_file(confirmed_source_url, 'confirmed source')
+ if urlh and urlh.headers.get('Content-Disposition'):
+ add_source_format(urlh)
if not formats:
reason = self._search_regex(
if not formats:
reason = self._search_regex(