feat(hls): Enhance segment retrieval by allowing all file types and clean up empty segment directories. Fixes issues with VTT files from HLS not being found correctly due to new HLS "changes"

This commit is contained in:
Andy
2025-08-12 20:25:42 +00:00
parent 798b5bf3cd
commit eac2ff4cee

View File

@@ -4,6 +4,7 @@ import base64
import html import html
import json import json
import logging import logging
import os
import shutil import shutil
import subprocess import subprocess
import sys import sys
@@ -590,7 +591,7 @@ class HLS:
# First check direct files in the directory # First check direct files in the directory
if directory.exists(): if directory.exists():
segments.extend([x for x in directory.iterdir() if x.is_file() and x.suffix in {".ts", ".mp4", ".m4s"}]) segments.extend([x for x in directory.iterdir() if x.is_file()])
# If no direct files, recursively search subdirectories # If no direct files, recursively search subdirectories
if not segments: if not segments:
@@ -614,8 +615,17 @@ class HLS:
discontinuity_data = discontinuity_file.read_bytes() discontinuity_data = discontinuity_file.read_bytes()
f.write(discontinuity_data) f.write(discontinuity_data)
f.flush() f.flush()
os.fsync(f.fileno())
discontinuity_file.unlink() discontinuity_file.unlink()
# Clean up empty segment directory
if save_dir.exists() and save_dir.name.endswith("_segments"):
try:
save_dir.rmdir()
except OSError:
# Directory might not be empty, try removing recursively
shutil.rmtree(save_dir, ignore_errors=True)
progress(downloaded="Downloaded") progress(downloaded="Downloaded")
track.path = save_path track.path = save_path