Keep failed HLS preflight on native path

This commit is contained in:
Dymas
2026-09-05 22:41:50 +02:00
parent a9549cf882
commit 0c051f4015
5 changed files with 53 additions and 4 deletions
+15
View File
@@ -4546,6 +4546,21 @@ seg-3.ts
)
)
def test_hls_preflight_failure_does_not_fall_through_to_direct_ffmpeg(self):
with tempfile.TemporaryDirectory() as temp_root:
target = Path(temp_root) / "Episode.mp4"
stream = {"url": "https://cdn.example/master.m3u8", "isM3U8": True, "headers": {}}
with mock.patch.object(provider_downloader, "resolve_hls_input_url", return_value=stream["url"]), mock.patch.object(
provider_downloader, "hls_media_playlist", side_effect=RuntimeError("playlist blocked")
), mock.patch.object(provider_downloader, "download_hls_segments", return_value=1) as download_segments, mock.patch.object(
provider_downloader, "run_ffmpeg"
) as run_ffmpeg:
code = provider_downloader.download_episode(stream, target, episode_number=1)
self.assertEqual(code, 1)
download_segments.assert_called_once()
run_ffmpeg.assert_not_called()
def test_fetch_bytes_with_retries_recovers_from_segment_rate_limit(self):
error = urllib.error.HTTPError(
"https://cdn.example/video/raw-segment",