Continue after provider playlist errors
This commit is contained in:
+51
@@ -4824,6 +4824,57 @@ https://shard-102.snapcdn.top/anime/show/episode/seg-f1-00083.css
|
||||
self.assertEqual(raised.exception.code, 0)
|
||||
self.assertEqual(calls, ["HD-1", "HD-2"])
|
||||
|
||||
def test_provider_downloader_tries_next_source_after_playlist_exception(self):
|
||||
calls = []
|
||||
|
||||
def fake_bridge(command, provider, *args):
|
||||
if command == "info":
|
||||
return {"title": "Retry Exception Show"}
|
||||
if command == "episodes":
|
||||
return {"episodes": [{"number": 1, "id": "ep1"}]}
|
||||
if command == "resolve-all":
|
||||
return {
|
||||
"sources": [
|
||||
{"url": "https://bad.example/master.m3u8", "server": "StreamHG", "type": "dub"},
|
||||
{"url": "https://good.example/master.m3u8", "server": "Earnvids", "type": "dub"},
|
||||
]
|
||||
}
|
||||
raise AssertionError(f"unexpected bridge command {command}")
|
||||
|
||||
def fake_download(stream, target, episode_number=None, episode_index=None, episode_total=None):
|
||||
calls.append(stream["server"])
|
||||
if stream["server"] == "StreamHG":
|
||||
raise RuntimeError("HTTP Error 502: Bad Gateway")
|
||||
return 0
|
||||
|
||||
argv = [
|
||||
"provider_downloader.py",
|
||||
"--provider",
|
||||
"anikoto",
|
||||
"--show-id",
|
||||
"anikoto:show-1",
|
||||
"--title",
|
||||
"Retry Exception Show",
|
||||
"--episodes",
|
||||
"1",
|
||||
"--mode",
|
||||
"dub",
|
||||
"--quality",
|
||||
"best",
|
||||
"--output-dir",
|
||||
"/tmp/kaizoku-provider-test",
|
||||
]
|
||||
with mock.patch.object(provider_downloader, "bridge", side_effect=fake_bridge), mock.patch.object(
|
||||
provider_downloader, "download_episode", side_effect=fake_download
|
||||
), mock.patch.object(provider_downloader, "download_subtitles", return_value=[]), mock.patch.object(
|
||||
provider_downloader.sys, "argv", argv
|
||||
):
|
||||
with self.assertRaises(SystemExit) as raised:
|
||||
provider_downloader.main()
|
||||
|
||||
self.assertEqual(raised.exception.code, 0)
|
||||
self.assertEqual(calls, ["StreamHG", "Earnvids"])
|
||||
|
||||
def test_provider_bridge_resolve_does_not_fallback_from_dub_to_sub(self):
|
||||
bridge_js = (ROOT / "providers" / "bridge.js").read_text(encoding="utf-8")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user