Make extractor-designated impersonation override `--impersonate` (#13792)

Fix 32809eb2da

Authored by: bashonly
pull/13799/head
bashonly 4 days ago committed by GitHub
parent 2ac3eb9837
commit 3e49bc8a1b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -3232,15 +3232,6 @@ class YoutubeDL:
else:
params = self.params
impersonate = info.pop('impersonate', None)
# Do not override --impersonate with extractor-specified impersonation
if params.get('impersonate') is None:
available_target, requested_targets = self._parse_impersonate_targets(impersonate)
if available_target:
info['impersonate'] = available_target
elif requested_targets:
self.report_warning(self._unavailable_targets_message(requested_targets), only_once=True)
fd = get_suitable_downloader(info, params, to_stdout=(name == '-'))(self, params)
if not test:
for ph in self._progress_hooks:

@ -495,3 +495,14 @@ class FileDownloader:
exe = os.path.basename(args[0])
self.write_debug(f'{exe} command line: {shell_quote(args)}')
def _get_impersonate_target(self, info_dict):
impersonate = info_dict.get('impersonate')
if impersonate is None:
return None
available_target, requested_targets = self.ydl._parse_impersonate_targets(impersonate)
if available_target:
return available_target
elif requested_targets:
self.report_warning(self.ydl._unavailable_targets_message(requested_targets))
return None

@ -28,8 +28,9 @@ class HttpFD(FileDownloader):
url = info_dict['url']
request_data = info_dict.get('request_data', None)
request_extensions = {}
if info_dict.get('impersonate') is not None:
request_extensions['impersonate'] = info_dict['impersonate']
impersonate_target = self._get_impersonate_target(info_dict)
if impersonate_target is not None:
request_extensions['impersonate'] = impersonate_target
class DownloadContext(dict):
__getattr__ = dict.get

Loading…
Cancel
Save