mirror of
https://github.com/yt-dlp/yt-dlp
synced 2025-07-09 15:23:59 -05:00
@ -1439,6 +1439,26 @@ class YoutubeDLCookieJar(compat_cookiejar.MozillaCookieJar):
|
||||
'CookieFileEntry',
|
||||
('domain_name', 'include_subdomains', 'path', 'https_only', 'expires_at', 'name', 'value'))
|
||||
|
||||
def __init__(self, filename=None, *args, **kwargs):
|
||||
super().__init__(None, *args, **kwargs)
|
||||
if self.is_path(filename):
|
||||
filename = os.fspath(filename)
|
||||
self.filename = filename
|
||||
|
||||
@staticmethod
|
||||
def is_path(file):
|
||||
return isinstance(file, (str, bytes, os.PathLike))
|
||||
|
||||
@contextlib.contextmanager
|
||||
def open(self, file, *, write=False):
|
||||
if self.is_path(file):
|
||||
with open(file, 'w' if write else 'r', encoding='utf-8') as f:
|
||||
yield f
|
||||
else:
|
||||
if write:
|
||||
file.truncate(0)
|
||||
yield file
|
||||
|
||||
def save(self, filename=None, ignore_discard=False, ignore_expires=False):
|
||||
"""
|
||||
Save cookies to a file.
|
||||
@ -1458,7 +1478,7 @@ class YoutubeDLCookieJar(compat_cookiejar.MozillaCookieJar):
|
||||
if cookie.expires is None:
|
||||
cookie.expires = 0
|
||||
|
||||
with open(filename, 'w', encoding='utf-8') as f:
|
||||
with self.open(filename, write=True) as f:
|
||||
f.write(self._HEADER)
|
||||
now = time.time()
|
||||
for cookie in self:
|
||||
@ -1514,7 +1534,7 @@ class YoutubeDLCookieJar(compat_cookiejar.MozillaCookieJar):
|
||||
return line
|
||||
|
||||
cf = io.StringIO()
|
||||
with open(filename, encoding='utf-8') as f:
|
||||
with self.open(filename) as f:
|
||||
for line in f:
|
||||
try:
|
||||
cf.write(prepare_line(line))
|
||||
|
Reference in New Issue
Block a user