From 7620cd46c3ac6c265be3730925281f77a801c89c Mon Sep 17 00:00:00 2001 From: shirt-dev <2660574+shirt-dev@users.noreply.github.com> Date: Sat, 13 Feb 2021 11:15:41 -0500 Subject: #79 Fix HLS AES-128 with multiple keys in external downloaders Authored-by: shirtjs <2660574+shirtjs@users.noreply.github.com> --- youtube_dlc/downloader/hls.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'youtube_dlc/downloader/hls.py') diff --git a/youtube_dlc/downloader/hls.py b/youtube_dlc/downloader/hls.py index ea515a48e..0d427479f 100644 --- a/youtube_dlc/downloader/hls.py +++ b/youtube_dlc/downloader/hls.py @@ -134,6 +134,7 @@ class HlsFD(FragmentFD): i = 0 media_sequence = 0 decrypt_info = {'METHOD': 'NONE'} + key_list = [] byte_range = {} frag_index = 0 ad_frag_next = False @@ -215,6 +216,10 @@ class HlsFD(FragmentFD): decrypt_info['URI'] = update_url_query(decrypt_info['URI'], extra_query) if decrypt_url != decrypt_info['URI']: decrypt_info['KEY'] = None + key_data = decrypt_info.copy() + key_data['INDEX'] = frag_index + key_list.append(key_data) + elif line.startswith('#EXT-X-MEDIA-SEQUENCE'): media_sequence = int(line[22:]) elif line.startswith('#EXT-X-BYTERANGE'): @@ -232,7 +237,7 @@ class HlsFD(FragmentFD): if real_downloader: info_copy = info_dict.copy() info_copy['url_list'] = fragment_urls - info_copy['decrypt_info'] = decrypt_info + info_copy['key_list'] = key_list fd = real_downloader(self.ydl, self.params) # TODO: Make progress updates work without hooking twice # for ph in self._progress_hooks: -- cgit v1.2.3