match segment with playlist name

pull/702/head
Luke Pulverenti 10 years ago
parent 7e4e9d6644
commit df4b2c47d6

@ -193,17 +193,23 @@ namespace MediaBrowser.Api.Playback.Hls
return int.Parse(indexString, NumberStyles.Integer, UsCulture); return int.Parse(indexString, NumberStyles.Integer, UsCulture);
} }
private void DeleteLastFile(string path, string segmentExtension, int retryCount) private void DeleteLastFile(string playlistPath, string segmentExtension, int retryCount)
{
var file = GetLastTranscodingFile(playlistPath, segmentExtension, FileSystem);
if (file != null)
{
DeleteFile(file, retryCount);
}
}
private void DeleteFile(FileInfo file, int retryCount)
{ {
if (retryCount >= 5) if (retryCount >= 5)
{ {
return; return;
} }
var file = GetLastTranscodingFile(path, segmentExtension, FileSystem);
if (file != null)
{
try try
{ {
File.Delete(file.FullName); File.Delete(file.FullName);
@ -213,24 +219,25 @@ namespace MediaBrowser.Api.Playback.Hls
Logger.ErrorException("Error deleting partial stream file(s) {0}", ex, file.FullName); Logger.ErrorException("Error deleting partial stream file(s) {0}", ex, file.FullName);
Thread.Sleep(100); Thread.Sleep(100);
DeleteLastFile(path, segmentExtension, retryCount + 1); DeleteFile(file, retryCount + 1);
} }
catch (Exception ex) catch (Exception ex)
{ {
Logger.ErrorException("Error deleting partial stream file(s) {0}", ex, file.FullName); Logger.ErrorException("Error deleting partial stream file(s) {0}", ex, file.FullName);
} }
} }
}
private static FileInfo GetLastTranscodingFile(string playlist, string segmentExtension, IFileSystem fileSystem) private static FileInfo GetLastTranscodingFile(string playlist, string segmentExtension, IFileSystem fileSystem)
{ {
var folder = Path.GetDirectoryName(playlist); var folder = Path.GetDirectoryName(playlist);
var filePrefix = Path.GetFileNameWithoutExtension(playlist) ?? string.Empty;
try try
{ {
return new DirectoryInfo(folder) return new DirectoryInfo(folder)
.EnumerateFiles("*", SearchOption.TopDirectoryOnly) .EnumerateFiles("*", SearchOption.TopDirectoryOnly)
.Where(i => string.Equals(i.Extension, segmentExtension, StringComparison.OrdinalIgnoreCase)) .Where(i => string.Equals(i.Extension, segmentExtension, StringComparison.OrdinalIgnoreCase) && Path.GetFileNameWithoutExtension(i.Name).StartsWith(filePrefix, StringComparison.OrdinalIgnoreCase))
.OrderByDescending(fileSystem.GetLastWriteTimeUtc) .OrderByDescending(fileSystem.GetLastWriteTimeUtc)
.FirstOrDefault(); .FirstOrDefault();
} }

Loading…
Cancel
Save