mirror of
https://github.com/unshackle-dl/unshackle.git
synced 2025-10-23 15:11:08 +00:00
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:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user