Add HLS segment download fallback

This commit is contained in:
Codex
2026-08-09 12:40:11 +02:00
parent 54d559d73c
commit 3018e7aa66
5 changed files with 219 additions and 10 deletions
+30
View File
@@ -4275,6 +4275,36 @@ mid/index.m3u8
"https://cdn.example/show/high/index.m3u8",
)
def test_parse_hls_segments_resolves_plain_and_encrypted_segments(self):
playlist = """#EXTM3U
#EXT-X-MEDIA-SEQUENCE:7
#EXTINF:4.0,
seg-1
#EXT-X-KEY:METHOD=AES-128,URI="keys/key.bin"
#EXTINF:4.0,
https://cdn.example/raw-segment
#EXTINF:4.0,
seg-3.ts
"""
segments = provider_downloader.parse_hls_segments("https://cdn.example/path/index.m3u8", playlist)
self.assertEqual(segments[0], {"url": "https://cdn.example/path/seg-1"})
self.assertEqual(
segments[1],
{
"url": "https://cdn.example/raw-segment",
"key_url": "https://cdn.example/path/keys/key.bin",
"iv": "8",
},
)
self.assertEqual(segments[2]["iv"], "9")
def test_strip_png_header_removes_short_wrapper(self):
payload = b"\x89PNG\r\n\x1a\njunkIENDabcdVIDEO"
self.assertEqual(provider_downloader.strip_png_header(payload), b"VIDEO")
if __name__ == "__main__":
unittest.main()