commit: cff99c91d150df2a4e21962a3ca8d4ae94533b8c
parent fa9b8c662808a50605bb05f90af101e13b30fce6
Author: Sergey M․ <dstftw@gmail.com>
Date: Sun, 8 Mar 2020 17:52:19 +0700
[utils] Add support for cookies with spaces used instead of tabs
Diffstat:
3 files changed, 19 insertions(+), 5 deletions(-)
diff --git a/test/test_YoutubeDLCookieJar.py b/test/test_YoutubeDLCookieJar.py
@@ -14,6 +14,9 @@ from youtube_dl.utils import YoutubeDLCookieJar
class TestYoutubeDLCookieJar(unittest.TestCase):
+ def __assert_cookie_has_value(self, cookiejar, key):
+ self.assertEqual(cookiejar._cookies['www.foobar.foobar']['/'][key].value, key + '_VALUE')
+
def test_keep_session_cookies(self):
cookiejar = YoutubeDLCookieJar('./test/testdata/cookies/session_cookies.txt')
cookiejar.load(ignore_discard=True, ignore_expires=True)
@@ -32,12 +35,13 @@ class TestYoutubeDLCookieJar(unittest.TestCase):
def test_strip_httponly_prefix(self):
cookiejar = YoutubeDLCookieJar('./test/testdata/cookies/httponly_cookies.txt')
cookiejar.load(ignore_discard=True, ignore_expires=True)
+ self.__assert_cookie_has_value(cookiejar, 'HTTPONLY_COOKIE')
+ self.__assert_cookie_has_value(cookiejar, 'JS_ACCESSIBLE_COOKIE')
- def assert_cookie_has_value(key):
- self.assertEqual(cookiejar._cookies['www.foobar.foobar']['/'][key].value, key + '_VALUE')
-
- assert_cookie_has_value('HTTPONLY_COOKIE')
- assert_cookie_has_value('JS_ACCESSIBLE_COOKIE')
+ def test_convert_spaces_to_tabs(self):
+ cookiejar = YoutubeDLCookieJar('./test/testdata/cookies/cookie_file_with_spaces.txt')
+ cookiejar.load(ignore_discard=True, ignore_expires=True)
+ self.__assert_cookie_has_value(cookiejar, 'COOKIE')
if __name__ == '__main__':
diff --git a/test/testdata/cookies/cookie_file_with_spaces.txt b/test/testdata/cookies/cookie_file_with_spaces.txt
@@ -0,0 +1,5 @@
+# Netscape HTTP Cookie File
+# http://curl.haxx.se/rfc/cookie_spec.html
+# This is a generated file! Do not edit.
+
+www.foobar.foobar FALSE / TRUE 2147483647 COOKIE COOKIE_VALUE
diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py
@@ -2752,6 +2752,11 @@ class YoutubeDLCookieJar(compat_cookiejar.MozillaCookieJar):
for line in f:
if line.startswith(self._HTTPONLY_PREFIX):
line = line[len(self._HTTPONLY_PREFIX):]
+ # Cookie file may contain spaces instead of tabs.
+ # Replace all spaces with tabs to make such cookie files work
+ # with MozillaCookieJar.
+ if not line.startswith('#'):
+ line = re.sub(r' +', r'\t', line)
cf.write(compat_str(line))
cf.seek(0)
self._really_load(cf, filename, ignore_discard, ignore_expires)