[utils] Add support for cookies with spaces used instead of tabs
This commit is contained in:
		
							parent
							
								
									fa9b8c6628
								
							
						
					
					
						commit
						cff99c91d1
					
				
					 3 changed files with 19 additions and 5 deletions
				
			
		| 
						 | 
				
			
			@ -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__':
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										5
									
								
								test/testdata/cookies/cookie_file_with_spaces.txt
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								test/testdata/cookies/cookie_file_with_spaces.txt
									
										
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			@ -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)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue