Fix provider HLS downloads

This commit is contained in:
Codex
2026-08-09 12:32:41 +02:00
parent cb86f79da1
commit 54d559d73c
5 changed files with 175 additions and 17 deletions
+37
View File
@@ -22,6 +22,7 @@ if str(ROOT) not in sys.path:
import queue_jobs
import http_handler
import provider_downloader
os.environ.setdefault("ANI_CLI_WEB_DISABLE_WORKER", "1")
os.environ["ANI_CLI_WEB_STATE_ROOT"] = TEMP_STATE.name
@@ -4239,5 +4240,41 @@ class AniDbCacheTests(unittest.TestCase):
APP.ANIDB_TITLES_CACHE.update(original_cache)
class ProviderDownloaderTests(unittest.TestCase):
def test_episode_key_keeps_episode_ten_distinct_from_one(self):
self.assertEqual(provider_downloader.episode_key(1), "1")
self.assertEqual(provider_downloader.episode_key(10), "10")
self.assertEqual(provider_downloader.episode_key("10.0"), "10")
self.assertEqual(provider_downloader.episode_key("10.5"), "10.5")
def test_wanted_episodes_preserves_range_order_and_existing_ids(self):
episodes = [
{"number": 10, "id": "ep10"},
{"number": 2, "id": "ep2"},
{"number": 11, "id": "ep11"},
{"number": 12, "id": "ep12"},
]
wanted = provider_downloader.wanted_episodes("10-12", episodes)
self.assertEqual([episode["number"] for episode in wanted], [10, 11, 12])
self.assertEqual([episode["id"] for episode in wanted], ["ep10", "ep11", "ep12"])
def test_best_hls_variant_url_selects_highest_bandwidth(self):
master = """#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=800000,RESOLUTION=640x360
low/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=5500000,RESOLUTION=1920x1080
high/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=2800000,RESOLUTION=1280x720
mid/index.m3u8
"""
self.assertEqual(
provider_downloader.best_hls_variant_url("https://cdn.example/show/master.m3u8", master),
"https://cdn.example/show/high/index.m3u8",
)
if __name__ == "__main__":
unittest.main()