Fix provider HLS downloads
This commit is contained in:
+37
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user