浏览代码

Fix DirectoryNotFoundException for backdrop folders in trickplay (#14223)

theguymadmax 1 天之前
父节点
当前提交
5ac0260e5f
共有 1 个文件被更改,包括 19 次插入16 次删除
  1. 19 16
      Jellyfin.Server.Implementations/Trickplay/TrickplayManager.cs

+ 19 - 16
Jellyfin.Server.Implementations/Trickplay/TrickplayManager.cs

@@ -196,24 +196,27 @@ public class TrickplayManager : ITrickplayManager
             }
 
             // Cleanup old trickplay files
-            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)
+            if (Directory.Exists(trickplayDirectory))
             {
-                try
-                {
-                    _logger.LogWarning("Pruning trickplay files for {Item}", video.Path);
-                    Directory.Delete(folder, true);
-                }
-                catch (Exception ex)
+                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("Unable to remove trickplay directory: {Directory}: {Exception}", folder, ex);
+                    try
+                    {
+                        _logger.LogWarning("Pruning trickplay files for {Item}", video.Path);
+                        Directory.Delete(folder, true);
+                    }
+                    catch (Exception ex)
+                    {
+                        _logger.LogWarning("Unable to remove trickplay directory: {Directory}: {Exception}", folder, ex);
+                    }
                 }
             }
         }