Skip to content

Commit

Permalink
[utils] Add support for cookies with spaces used instead of tabs
Browse files Browse the repository at this point in the history
  • Loading branch information
dstftw committed Mar 8, 2020
1 parent fa9b8c6 commit cff99c9
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 5 deletions.
14 changes: 9 additions & 5 deletions test/test_YoutubeDLCookieJar.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@


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)
Expand All @@ -32,12 +35,13 @@ def test_keep_session_cookies(self):
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__':
Expand Down
5 changes: 5 additions & 0 deletions test/testdata/cookies/cookie_file_with_spaces.txt
Original file line number Diff line number Diff line change
@@ -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
5 changes: 5 additions & 0 deletions youtube_dl/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -2752,6 +2752,11 @@ def load(self, filename=None, ignore_discard=False, ignore_expires=False):
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)
Expand Down

0 comments on commit cff99c9

Please sign in to comment.