Skip to content

Commit

Permalink
make impersonate_target_available and `get_available_impersonate_ta…
Browse files Browse the repository at this point in the history
…rgets` internal only
  • Loading branch information
coletdjnz committed Mar 15, 2024
1 parent fbafe3d commit 7bf1abb
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 9 deletions.
8 changes: 4 additions & 4 deletions test/test_networking.py
Original file line number Diff line number Diff line change
Expand Up @@ -1633,14 +1633,14 @@ def _send(self, request: Request):

with FakeYDL() as ydl:
ydl._request_director = ydl.build_request_director(handlers)
assert set(ydl.get_available_impersonate_targets()) == {
assert set(ydl._get_available_impersonate_targets()) == {
(ImpersonateTarget('chrome'), 'chrome'),
(ImpersonateTarget('firefox'), 'firefox'),
(ImpersonateTarget('edge'), 'edge')
}
assert ydl.impersonate_target_available(ImpersonateTarget('firefox'))
assert ydl.impersonate_target_available(ImpersonateTarget())
assert not ydl.impersonate_target_available(ImpersonateTarget('safari'))
assert ydl._impersonate_target_available(ImpersonateTarget('firefox'))
assert ydl._impersonate_target_available(ImpersonateTarget())
assert not ydl._impersonate_target_available(ImpersonateTarget('safari'))

@pytest.mark.parametrize('proxy_key,proxy_url,expected', [
('http', '__noproxy__', None),
Expand Down
9 changes: 5 additions & 4 deletions yt_dlp/YoutubeDL.py
Original file line number Diff line number Diff line change
Expand Up @@ -719,7 +719,7 @@ def check_deprecated(param, option, suggestion):

impersonate_target = self.params.get('impersonate')
if impersonate_target is not None:
if not self.impersonate_target_available(impersonate_target):
if not self._impersonate_target_available(impersonate_target):
raise YoutubeDLError(
f'Impersonate target "{self.params.get("impersonate")}" is not available. '
f'Use --list-impersonate-targets to see available targets. '
Expand Down Expand Up @@ -4089,15 +4089,16 @@ def _opener(self):
handler = self._request_director.handlers['Urllib']
return handler._get_instance(cookiejar=self.cookiejar, proxies=self.proxies)

def get_available_impersonate_targets(self):
def _get_available_impersonate_targets(self):
# todo(future): make available as public API
return list(
itertools.chain.from_iterable(
[[(target, rh.RH_NAME) for target in rh.supported_targets]
for rh in self._request_director.handlers.values()
if isinstance(rh, ImpersonateRequestHandler)]))

def impersonate_target_available(self, target):
# This assumes that all handlers that support impersonation subclass ImpersonateRequestHandler
def _impersonate_target_available(self, target):
# todo(future): make available as public API
return any(
rh.is_supported_target(target)
for rh in self._request_director.handlers.values()
Expand Down
2 changes: 1 addition & 1 deletion yt_dlp/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -996,7 +996,7 @@ def _real_main(argv=None):
(ImpersonateTarget('chrome', os='android'), 'curl_cffi'),
]

available_targets = ydl.get_available_impersonate_targets()
available_targets = ydl._get_available_impersonate_targets()

rows = [
[target.client or '-', target.version or '-', target.os or '-', target.os_vers or '-', handler]
Expand Down

0 comments on commit 7bf1abb

Please sign in to comment.