|
@@ -132,13 +132,25 @@ namespace Jellyfin.Api.Controllers
|
|
|
|
|
|
var normalizedPlaylistId = playlistId;
|
|
var normalizedPlaylistId = playlistId;
|
|
|
|
|
|
- var playlistPath = _fileSystem.GetFilePaths(transcodeFolderPath)
|
|
|
|
- .FirstOrDefault(i =>
|
|
|
|
- string.Equals(Path.GetExtension(i), ".m3u8", StringComparison.OrdinalIgnoreCase)
|
|
|
|
- && i.IndexOf(normalizedPlaylistId, StringComparison.OrdinalIgnoreCase) != -1)
|
|
|
|
- ?? throw new ResourceNotFoundException($"Provided path ({transcodeFolderPath}) is not valid.");
|
|
|
|
|
|
+ var filePaths = _fileSystem.GetFilePaths(transcodeFolderPath);
|
|
|
|
+ // Add . to start of segment container for future use.
|
|
|
|
+ segmentContainer = segmentContainer.Insert(0, ".");
|
|
|
|
+ string? playlistPath = null;
|
|
|
|
+ foreach (var path in filePaths)
|
|
|
|
+ {
|
|
|
|
+ var pathExtension = Path.GetExtension(path);
|
|
|
|
+ if ((string.Equals(pathExtension, segmentContainer, StringComparison.OrdinalIgnoreCase)
|
|
|
|
+ || string.Equals(pathExtension, ".m3u8", StringComparison.OrdinalIgnoreCase))
|
|
|
|
+ && path.IndexOf(normalizedPlaylistId, StringComparison.OrdinalIgnoreCase) != -1)
|
|
|
|
+ {
|
|
|
|
+ playlistPath = path;
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
|
|
- return GetFileResult(file, playlistPath);
|
|
|
|
|
|
+ return playlistPath == null
|
|
|
|
+ ? NotFound("Hls segment not found.")
|
|
|
|
+ : GetFileResult(file, playlistPath);
|
|
}
|
|
}
|
|
|
|
|
|
private ActionResult GetFileResult(string path, string playlistPath)
|
|
private ActionResult GetFileResult(string path, string playlistPath)
|