diff --git a/ErsatzTV.Application/Maintenance/Commands/DeleteOrphanedArtworkHandler.cs b/ErsatzTV.Application/Maintenance/Commands/DeleteOrphanedArtworkHandler.cs index bf7077dae..3bffbab70 100644 --- a/ErsatzTV.Application/Maintenance/Commands/DeleteOrphanedArtworkHandler.cs +++ b/ErsatzTV.Application/Maintenance/Commands/DeleteOrphanedArtworkHandler.cs @@ -49,6 +49,17 @@ public class DeleteOrphanedArtworkHandler( System.Collections.Generic.HashSet validFiles = []; + List watermarks = await dbContext.ChannelWatermarks + .TagWithCallSite() + .AsNoTracking() + .Select(c => c.Image) + .ToListAsync(cancellationToken); + + foreach (string watermark in watermarks.Where(w => !string.IsNullOrWhiteSpace(w))) + { + validFiles.Add(watermark); + } + var lastId = 0; while (true) { @@ -142,7 +153,15 @@ public class DeleteOrphanedArtworkHandler( { try { - fileSystem.Directory.Delete(path); + // don't delete artwork cache folder or its direct children + if (path != FileSystemLayout.ArtworkCacheFolder) + { + var parent = fileSystem.Directory.GetParent(path); + if (parent?.FullName != FileSystemLayout.ArtworkCacheFolder) + { + fileSystem.Directory.Delete(path); + } + } } catch (Exception ex) {