diff options
author | coletdjnz <coletdjnz@protonmail.com> | 2023-08-05 10:17:48 +1200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-08-04 22:17:48 +0000 |
commit | db7b054a6111ca387220d0eb87bf342f9c130eb8 (patch) | |
tree | ed433e2cfa1fae8468603e19aea8264761dec75f /yt_dlp/YoutubeDL.py | |
parent | db9743894071760f994f640a4c24358f749a78c0 (diff) | |
download | hypervideo-pre-db7b054a6111ca387220d0eb87bf342f9c130eb8.tar.lz hypervideo-pre-db7b054a6111ca387220d0eb87bf342f9c130eb8.tar.xz hypervideo-pre-db7b054a6111ca387220d0eb87bf342f9c130eb8.zip |
[networking] Add request handler preference framework (#7603)
Preference functions that take a request and a request handler instance can be registered to prioritize different request handlers per request.
Authored by: coletdjnz
Co-authored-by: pukkandan <pukkandan.ytdlp@gmail.com>
Diffstat (limited to 'yt_dlp/YoutubeDL.py')
-rw-r--r-- | yt_dlp/YoutubeDL.py | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/yt_dlp/YoutubeDL.py b/yt_dlp/YoutubeDL.py index 87bca5bbe..666d89b46 100644 --- a/yt_dlp/YoutubeDL.py +++ b/yt_dlp/YoutubeDL.py @@ -34,7 +34,7 @@ from .extractor.common import UnsupportedURLIE from .extractor.openload import PhantomJSwrapper from .minicurses import format_text from .networking import HEADRequest, Request, RequestDirector -from .networking.common import _REQUEST_HANDLERS +from .networking.common import _REQUEST_HANDLERS, _RH_PREFERENCES from .networking.exceptions import ( HTTPError, NoSupportingHandlers, @@ -683,7 +683,7 @@ class YoutubeDL: 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()) + 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() @@ -4077,7 +4077,7 @@ class YoutubeDL: except HTTPError as e: # TODO: Remove in a future release raise _CompatHTTPError(e) from e - def build_request_director(self, handlers): + def build_request_director(self, handlers, preferences=None): logger = _YDLLogger(self) headers = self.params['http_headers'].copy() proxies = self.proxies.copy() @@ -4106,6 +4106,7 @@ class YoutubeDL: }, }), )) + director.preferences.update(preferences or []) return director def encode(self, s): |