mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2024-11-25 02:45:12 +00:00
[fd/external] Fixes to cookie handling
- Fix bug in `axel` Cookie header arg - Pass cookies to `curl` as strings - Write session cookies for `aria2c` and `wget` Closes #7539 Authored by: bashonly
This commit is contained in:
parent
6c5211cebe
commit
42ded0a429
2 changed files with 10 additions and 8 deletions
|
@ -68,7 +68,7 @@ def test_make_cmd(self):
|
||||||
ydl.cookiejar.set_cookie(http.cookiejar.Cookie(**TEST_COOKIE))
|
ydl.cookiejar.set_cookie(http.cookiejar.Cookie(**TEST_COOKIE))
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
downloader._make_cmd('test', TEST_INFO),
|
downloader._make_cmd('test', TEST_INFO),
|
||||||
['axel', '-o', 'test', 'Cookie: test=ytdlp', '--max-redirect=0', '--', 'http://www.example.com/'])
|
['axel', '-o', 'test', '-H', 'Cookie: test=ytdlp', '--max-redirect=0', '--', 'http://www.example.com/'])
|
||||||
|
|
||||||
|
|
||||||
class TestWgetFD(unittest.TestCase):
|
class TestWgetFD(unittest.TestCase):
|
||||||
|
@ -85,10 +85,11 @@ class TestCurlFD(unittest.TestCase):
|
||||||
def test_make_cmd(self):
|
def test_make_cmd(self):
|
||||||
with FakeYDL() as ydl:
|
with FakeYDL() as ydl:
|
||||||
downloader = CurlFD(ydl, {})
|
downloader = CurlFD(ydl, {})
|
||||||
self.assertNotIn('--cookie-jar', downloader._make_cmd('test', TEST_INFO))
|
self.assertNotIn('--cookie', downloader._make_cmd('test', TEST_INFO))
|
||||||
# Test cookiejar tempfile arg is added
|
# Test cookie header is added
|
||||||
ydl.cookiejar.set_cookie(http.cookiejar.Cookie(**TEST_COOKIE))
|
ydl.cookiejar.set_cookie(http.cookiejar.Cookie(**TEST_COOKIE))
|
||||||
self.assertIn('--cookie-jar', downloader._make_cmd('test', TEST_INFO))
|
self.assertIn('--cookie', downloader._make_cmd('test', TEST_INFO))
|
||||||
|
self.assertIn('test=ytdlp', downloader._make_cmd('test', TEST_INFO))
|
||||||
|
|
||||||
|
|
||||||
class TestAria2cFD(unittest.TestCase):
|
class TestAria2cFD(unittest.TestCase):
|
||||||
|
|
|
@ -137,7 +137,7 @@ def _write_cookies(self):
|
||||||
self._cookies_tempfile = tmp_cookies.name
|
self._cookies_tempfile = tmp_cookies.name
|
||||||
self.to_screen(f'[download] Writing temporary cookies file to "{self._cookies_tempfile}"')
|
self.to_screen(f'[download] Writing temporary cookies file to "{self._cookies_tempfile}"')
|
||||||
# real_download resets _cookies_tempfile; if it's None then save() will write to cookiejar.filename
|
# real_download resets _cookies_tempfile; if it's None then save() will write to cookiejar.filename
|
||||||
self.ydl.cookiejar.save(self._cookies_tempfile)
|
self.ydl.cookiejar.save(self._cookies_tempfile, ignore_discard=True, ignore_expires=True)
|
||||||
return self.ydl.cookiejar.filename or self._cookies_tempfile
|
return self.ydl.cookiejar.filename or self._cookies_tempfile
|
||||||
|
|
||||||
def _call_downloader(self, tmpfilename, info_dict):
|
def _call_downloader(self, tmpfilename, info_dict):
|
||||||
|
@ -199,8 +199,9 @@ class CurlFD(ExternalFD):
|
||||||
|
|
||||||
def _make_cmd(self, tmpfilename, info_dict):
|
def _make_cmd(self, tmpfilename, info_dict):
|
||||||
cmd = [self.exe, '--location', '-o', tmpfilename, '--compressed']
|
cmd = [self.exe, '--location', '-o', tmpfilename, '--compressed']
|
||||||
if self.ydl.cookiejar.get_cookie_header(info_dict['url']):
|
cookie_header = self.ydl.cookiejar.get_cookie_header(info_dict['url'])
|
||||||
cmd += ['--cookie-jar', self._write_cookies()]
|
if cookie_header:
|
||||||
|
cmd += ['--cookie', cookie_header]
|
||||||
if info_dict.get('http_headers') is not None:
|
if info_dict.get('http_headers') is not None:
|
||||||
for key, val in info_dict['http_headers'].items():
|
for key, val in info_dict['http_headers'].items():
|
||||||
cmd += ['--header', f'{key}: {val}']
|
cmd += ['--header', f'{key}: {val}']
|
||||||
|
@ -233,7 +234,7 @@ def _make_cmd(self, tmpfilename, info_dict):
|
||||||
cmd += ['-H', f'{key}: {val}']
|
cmd += ['-H', f'{key}: {val}']
|
||||||
cookie_header = self.ydl.cookiejar.get_cookie_header(info_dict['url'])
|
cookie_header = self.ydl.cookiejar.get_cookie_header(info_dict['url'])
|
||||||
if cookie_header:
|
if cookie_header:
|
||||||
cmd += [f'Cookie: {cookie_header}', '--max-redirect=0']
|
cmd += ['-H', f'Cookie: {cookie_header}', '--max-redirect=0']
|
||||||
cmd += self._configuration_args()
|
cmd += self._configuration_args()
|
||||||
cmd += ['--', info_dict['url']]
|
cmd += ['--', info_dict['url']]
|
||||||
return cmd
|
return cmd
|
||||||
|
|
Loading…
Reference in a new issue