aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey M․ <dstftw@gmail.com>2020-03-08 17:52:19 +0700
committerSergey M․ <dstftw@gmail.com>2020-03-08 18:01:32 +0700
commitcff99c91d150df2a4e21962a3ca8d4ae94533b8c (patch)
treed7255407b40c57a8c3aab39b7b5bfce7ea06f54f
parentfa9b8c662808a50605bb05f90af101e13b30fce6 (diff)
[utils] Add support for cookies with spaces used instead of tabs
-rw-r--r--test/test_YoutubeDLCookieJar.py14
-rw-r--r--test/testdata/cookies/cookie_file_with_spaces.txt5
-rw-r--r--youtube_dl/utils.py5
3 files changed, 19 insertions, 5 deletions
diff --git a/test/test_YoutubeDLCookieJar.py b/test/test_YoutubeDLCookieJar.py
index f959798de..f833efac5 100644
--- 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
new file mode 100644
index 000000000..6fda35fa0
--- /dev/null
+++ 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
index 8ccf25489..93d1dec05 100644
--- 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)