From 8e39820adcfcd820cecef595606613eaab13dfa2 Mon Sep 17 00:00:00 2001 From: c-basalt <117849907+c-basalt@users.noreply.github.com> Date: Sun, 11 Aug 2024 10:43:15 -0400 Subject: [PATCH] update --- yt_dlp/jsinterp/external.py | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/yt_dlp/jsinterp/external.py b/yt_dlp/jsinterp/external.py index c0a2b62d2..ea67b6309 100644 --- a/yt_dlp/jsinterp/external.py +++ b/yt_dlp/jsinterp/external.py @@ -49,7 +49,7 @@ def cookie_jar_to_list(cookie_jar): @contextlib.contextmanager def _temp_file(content, *, mode='wt', encoding='utf-8', suffix=None, close=True): - if 'r' in mode: + if 'b' in mode: encoding = None temp_file_handle = tempfile.NamedTemporaryFile(mode, encoding=encoding, suffix=suffix, delete=False) try: @@ -62,6 +62,26 @@ def _temp_file(content, *, mode='wt', encoding='utf-8', suffix=None, close=True) os.remove(temp_file_handle.name) +@contextlib.contextmanager +def _tempfile_context(): + handles = [] + + def _creater(content, *, mode='wt', encoding='utf-8', suffix=None, close=True): + encoding = None if 'b' in mode else encoding + handle = tempfile.NamedTemporaryFile(mode, encoding=encoding, suffix=suffix, delete=False) + handles.append(handle) + handle.write(content) + if close: + handle.close() + return handle + try: + yield _creater + finally: + for handle in handles: + with contextlib.suppress(OSError): + os.remove(handle.name) + + class ExternalJSI: @classproperty(cache=True) def version(cls):