]> jfr.im git - yt-dlp.git/commitdiff
Create `ydl._request_director` when needed
authorpukkandan <redacted>
Sun, 25 Feb 2024 00:33:57 +0000 (06:03 +0530)
committerpukkandan <redacted>
Sun, 25 Feb 2024 00:36:42 +0000 (06:06 +0530)
yt_dlp/YoutubeDL.py
yt_dlp/networking/common.py

index 99b3ea8c218f4a20059ed74c5f8b63f08f4f7a0f..ef66306b1af7835b1417c6c2980bcdbeba25ef62 100644 (file)
@@ -690,7 +690,6 @@ def process_color_policy(stream):
         self.params['http_headers'] = HTTPHeaderDict(std_headers, self.params.get('http_headers'))
         self._load_cookies(self.params['http_headers'].get('Cookie'))  # compat
         self.params['http_headers'].pop('Cookie', None)
-        self._request_director = self.build_request_director(_REQUEST_HANDLERS.values(), _RH_PREFERENCES)
 
         if auto_init and auto_init != 'no_verbose_header':
             self.print_debug_header()
@@ -964,6 +963,7 @@ def __exit__(self, *args):
     def close(self):
         self.save_cookies()
         self._request_director.close()
+        del self._request_director
 
     def trouble(self, message=None, tb=None, is_error=True):
         """Determine action to take when a download problem appears.
@@ -4160,6 +4160,10 @@ def build_request_director(self, handlers, preferences=None):
             director.preferences.add(lambda rh, _: 500 if rh.RH_KEY == 'Urllib' else 0)
         return director
 
+    @functools.cached_property
+    def _request_director(self):
+        return self.build_request_director(_REQUEST_HANDLERS.values(), _RH_PREFERENCES)
+
     def encode(self, s):
         if isinstance(s, bytes):
             return s  # Already encoded
index 584c7bb4db4b6792f484c6b95376402cd548c21f..7da2652ae51c7a3af69ee0c77b12b13e9e18f078 100644 (file)
@@ -68,6 +68,7 @@ def __init__(self, logger, verbose=False):
     def close(self):
         for handler in self.handlers.values():
             handler.close()
+        self.handlers = {}
 
     def add_handler(self, handler: RequestHandler):
         """Add a handler. If a handler of the same RH_KEY exists, it will overwrite it"""