mirror of
https://github.com/unshackle-dl/unshackle.git
synced 2026-06-10 11:12:13 +00:00
A single failing subtitle track previously aborted the whole download. Add an opt-in --skip-subtitle-errors flag: when set, a Subtitle failure is logged and the track dropped from the mux while the video/audio still complete (Video/Audio failures stay fatal; default behaviour is unchanged). Done at the right layer to avoid the shared-event race: a failed track sets the process-global DOWNLOAD_CANCELLED event, which makes other in-flight tracks early-return without raising — so a skipped subtitle could otherwise silently truncate the video/audio that still got muxed. The download is split into two passes (download_tracks_in_passes): the fatal tracks download concurrently first, then the skippable subtitles run in a separate sequential pass once nothing else is in flight, with the event reset before each and at the start of every title. Skipped languages are recorded on the dl instance (skipped_subtitles) for callers to surface. Adds tests for the cancel-event interaction (a failing subtitle no longer truncates the video/audio), the good/bad subtitle mix, the flag-off fatal path, and the per-title reset.
4.5 KiB
4.5 KiB