]> jfr.im git - yt-dlp.git/blobdiff - yt_dlp/YoutubeDL.py
Create `ydl._request_director` when needed
[yt-dlp.git] / yt_dlp / YoutubeDL.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