aboutsummaryrefslogtreecommitdiff
path: root/yt_dlp/downloader/hls.py
diff options
context:
space:
mode:
authorbashonly <bashonly@protonmail.com>2024-06-03 11:22:49 -0500
committerbashonly <88596187+bashonly@users.noreply.github.com>2024-06-15 18:38:02 -0500
commitca8885edd93bdf8912af6c22ee335b6222cb9ba9 (patch)
treed2bbc1b981e94f9deda15d62a26de6d572d10a29 /yt_dlp/downloader/hls.py
parent4093eb1fcc29a0e2aea9adfcba479787d9ae0c0c (diff)
[fd/hls] Apply `extra_param_to_key_url` from info dict
Authored by: bashonly
Diffstat (limited to 'yt_dlp/downloader/hls.py')
-rw-r--r--yt_dlp/downloader/hls.py24
1 files changed, 14 insertions, 10 deletions
diff --git a/yt_dlp/downloader/hls.py b/yt_dlp/downloader/hls.py
index 9cb4f014c..0a00d5dab 100644
--- a/yt_dlp/downloader/hls.py
+++ b/yt_dlp/downloader/hls.py
@@ -160,10 +160,12 @@ class HlsFD(FragmentFD):
extra_state = ctx.setdefault('extra_state', {})
format_index = info_dict.get('format_index')
- extra_query = None
- extra_param_to_segment_url = info_dict.get('extra_param_to_segment_url')
- if extra_param_to_segment_url:
- extra_query = urllib.parse.parse_qs(extra_param_to_segment_url)
+ extra_segment_query = None
+ if extra_param_to_segment_url := info_dict.get('extra_param_to_segment_url'):
+ extra_segment_query = urllib.parse.parse_qs(extra_param_to_segment_url)
+ extra_key_query = None
+ if extra_param_to_key_url := info_dict.get('extra_param_to_key_url'):
+ extra_key_query = urllib.parse.parse_qs(extra_param_to_key_url)
i = 0
media_sequence = 0
decrypt_info = {'METHOD': 'NONE'}
@@ -190,8 +192,8 @@ class HlsFD(FragmentFD):
if frag_index <= ctx['fragment_index']:
continue
frag_url = urljoin(man_url, line)
- if extra_query:
- frag_url = update_url_query(frag_url, extra_query)
+ if extra_segment_query:
+ frag_url = update_url_query(frag_url, extra_segment_query)
fragments.append({
'frag_index': frag_index,
@@ -212,8 +214,8 @@ class HlsFD(FragmentFD):
frag_index += 1
map_info = parse_m3u8_attributes(line[11:])
frag_url = urljoin(man_url, map_info.get('URI'))
- if extra_query:
- frag_url = update_url_query(frag_url, extra_query)
+ if extra_segment_query:
+ frag_url = update_url_query(frag_url, extra_segment_query)
if map_info.get('BYTERANGE'):
splitted_byte_range = map_info.get('BYTERANGE').split('@')
@@ -244,8 +246,10 @@ class HlsFD(FragmentFD):
decrypt_info['KEY'] = external_aes_key
else:
decrypt_info['URI'] = urljoin(man_url, decrypt_info['URI'])
- if extra_query:
- decrypt_info['URI'] = update_url_query(decrypt_info['URI'], extra_query)
+ if extra_key_query or extra_segment_query:
+ # Fall back to extra_segment_query to key for backwards compat
+ decrypt_info['URI'] = update_url_query(
+ decrypt_info['URI'], extra_key_query or extra_segment_query)
if decrypt_url != decrypt_info['URI']:
decrypt_info['KEY'] = None