Fix DirectoryNotFoundException for backdrop folders in trickplay (#14223)

This commit is contained in:
theguymadmax 2025-06-05 17:57:31 -04:00 committed by GitHub
parent 88332e89c4
commit 5ac0260e5f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -196,24 +196,27 @@ public class TrickplayManager : ITrickplayManager
} }
// Cleanup old trickplay files // Cleanup old trickplay files
var existingFolders = Directory.GetDirectories(trickplayDirectory).ToList(); if (Directory.Exists(trickplayDirectory))
var trickplayInfos = await dbContext.TrickplayInfos
.AsNoTracking()
.Where(i => i.ItemId.Equals(video.Id))
.ToListAsync(cancellationToken)
.ConfigureAwait(false);
var expectedFolders = trickplayInfos.Select(i => GetTrickplayDirectory(video, i.TileWidth, i.TileHeight, i.Width, saveWithMedia)).ToList();
var foldersToRemove = existingFolders.Except(expectedFolders);
foreach (var folder in foldersToRemove)
{ {
try var existingFolders = Directory.GetDirectories(trickplayDirectory).ToList();
var trickplayInfos = await dbContext.TrickplayInfos
.AsNoTracking()
.Where(i => i.ItemId.Equals(video.Id))
.ToListAsync(cancellationToken)
.ConfigureAwait(false);
var expectedFolders = trickplayInfos.Select(i => GetTrickplayDirectory(video, i.TileWidth, i.TileHeight, i.Width, saveWithMedia)).ToList();
var foldersToRemove = existingFolders.Except(expectedFolders);
foreach (var folder in foldersToRemove)
{ {
_logger.LogWarning("Pruning trickplay files for {Item}", video.Path); try
Directory.Delete(folder, true); {
} _logger.LogWarning("Pruning trickplay files for {Item}", video.Path);
catch (Exception ex) Directory.Delete(folder, true);
{ }
_logger.LogWarning("Unable to remove trickplay directory: {Directory}: {Exception}", folder, ex); catch (Exception ex)
{
_logger.LogWarning("Unable to remove trickplay directory: {Directory}: {Exception}", folder, ex);
}
} }
} }
} }