diff --git a/youtube_dl/compat.py b/youtube_dl/compat.py index cd11ba5aa..1d784d90f 100644 --- a/youtube_dl/compat.py +++ b/youtube_dl/compat.py @@ -126,12 +126,24 @@ except ImportError: # Python 2 import Cookie as compat_cookies compat_http_cookies = compat_cookies -if sys.version_info[0] == 2: +if sys.version_info[0] == 2 or sys.version_info < (3, 3): class compat_cookies_SimpleCookie(compat_cookies.SimpleCookie): def load(self, rawdata): - if isinstance(rawdata, compat_str): - rawdata = str(rawdata) - return super(compat_cookies_SimpleCookie, self).load(rawdata) + must_have_value = 0 + if not isinstance(rawdata, dict): + if sys.version_info[:2] != (2, 7): + # attribute must have value for parsing + rawdata, must_have_value = re.subn( + r'(?i)(;\s*)(secure|httponly)(\s*(?:;|$))', r'\1\2=\2\3', rawdata) + if sys.version_info[0] == 2: + if isinstance(rawdata, compat_str): + rawdata = str(rawdata) + super(compat_cookies_SimpleCookie, self).load(rawdata) + if must_have_value > 0: + for morsel in self.values(): + for attr in ('secure', 'httponly'): + if morsel.get(attr): + morsel[attr] = True else: compat_cookies_SimpleCookie = compat_cookies.SimpleCookie compat_http_cookies_SimpleCookie = compat_cookies_SimpleCookie