HLS: Skip merging continuity if all segments were skipped

If all segments of a continuity is skipped, i.e. by OnSegmentFilter, then this code fails as the folder wouldn't exist.
This commit is contained in:
rlaphoenix 2024-02-13 17:03:42 +00:00
parent cd194e3192
commit bd185126b6
1 changed files with 15 additions and 14 deletions

View File

@ -325,20 +325,21 @@ class HLS:
last_speed_refresh = now
download_sizes.clear()
with open(discontinuity_save_path, "wb") as f:
for segment_file in sorted(discontinuity_save_dir.iterdir()):
segment_data = segment_file.read_bytes()
if isinstance(track, Subtitle):
segment_data = try_ensure_utf8(segment_data)
if track.codec not in (Subtitle.Codec.fVTT, Subtitle.Codec.fTTML):
# decode text direction entities or SubtitleEdit's /ReverseRtlStartEnd won't work
segment_data = segment_data.decode("utf8"). \
replace("‎", html.unescape("‎")). \
replace("‏", html.unescape("‏")). \
encode("utf8")
f.write(segment_data)
segment_file.unlink()
shutil.rmtree(discontinuity_save_dir)
if discontinuity_save_dir.exists():
with open(discontinuity_save_path, "wb") as f:
for segment_file in sorted(discontinuity_save_dir.iterdir()):
segment_data = segment_file.read_bytes()
if isinstance(track, Subtitle):
segment_data = try_ensure_utf8(segment_data)
if track.codec not in (Subtitle.Codec.fVTT, Subtitle.Codec.fTTML):
# decode text direction entities or SubtitleEdit's /ReverseRtlStartEnd won't work
segment_data = segment_data.decode("utf8"). \
replace("‎", html.unescape("‎")). \
replace("‏", html.unescape("‏")). \
encode("utf8")
f.write(segment_data)
segment_file.unlink()
shutil.rmtree(discontinuity_save_dir)
if DOWNLOAD_LICENCE_ONLY.is_set():
return