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
+31 -2
View File
@@ -434,8 +434,20 @@ def decrypt_aes128_segment(data, key, iv_value):
return proc.stdout
def download_hls_segments(stream, input_url, target, partial, episode_number=None, episode_index=None, episode_total=None):
input_url, playlist = hls_media_playlist(stream, input_url)
def download_hls_segments(
stream,
input_url,
target,
partial,
episode_number=None,
episode_index=None,
episode_total=None,
playlist_text=None,
):
if playlist_text is None:
input_url, playlist = hls_media_playlist(stream, input_url)
else:
playlist = playlist_text
segments = parse_hls_segments(input_url, playlist)
if not segments:
return 1
@@ -598,12 +610,29 @@ def download_episode(stream, target, episode_number=None, episode_index=None, ep
episode_number=episode_number,
episode_index=episode_index,
episode_total=episode_total,
playlist_text=playlist,
)
if code == 0:
return 0
return code
except Exception as exc:
print(f"Native HLS preflight failed: {exc}", file=sys.stderr)
try:
code = download_hls_segments(
stream,
input_url,
target,
partial,
episode_number=episode_number,
episode_index=episode_index,
episode_total=episode_total,
)
if code == 0:
return 0
return code
except Exception as segment_exc:
print(f"Segment downloader failed after HLS preflight error: {segment_exc}", file=sys.stderr)
return 1
attempts = [
[
*ffmpeg_base_command(stream, input_url),