diff --git a/src/NzbDrone.Core/MediaFiles/DiskScanService.cs b/src/NzbDrone.Core/MediaFiles/DiskScanService.cs index 999d4d067..f7d878f16 100644 --- a/src/NzbDrone.Core/MediaFiles/DiskScanService.cs +++ b/src/NzbDrone.Core/MediaFiles/DiskScanService.cs @@ -174,10 +174,16 @@ namespace NzbDrone.Core.MediaFiles fileInfoStopwatch.Stop(); _logger.Trace("Reprocessing existing files complete for: {0} [{1}]", series, decisionsStopwatch.Elapsed); - var filesOnDisk = GetNonVideoFiles(series.Path); - var possibleExtraFiles = FilterPaths(series.Path, filesOnDisk); - RemoveEmptySeriesFolder(series.Path); + + var possibleExtraFiles = new List(); + + if (_diskProvider.FolderExists(series.Path)) + { + var extraFiles = GetNonVideoFiles(series.Path); + possibleExtraFiles = FilterPaths(series.Path, extraFiles); + } + CompletedScanning(series, possibleExtraFiles); } diff --git a/src/NzbDrone.Core/MediaFiles/MediaFileDeletionService.cs b/src/NzbDrone.Core/MediaFiles/MediaFileDeletionService.cs index 064f15157..bd8d66025 100644 --- a/src/NzbDrone.Core/MediaFiles/MediaFileDeletionService.cs +++ b/src/NzbDrone.Core/MediaFiles/MediaFileDeletionService.cs @@ -129,28 +129,30 @@ namespace NzbDrone.Core.MediaFiles [EventHandleOrder(EventHandleOrder.Last)] public void Handle(EpisodeFileDeletedEvent message) { - if (_configService.DeleteEmptyFolders) + if (!_configService.DeleteEmptyFolders || message.Reason == DeleteMediaFileReason.MissingFromDisk) { - var series = message.EpisodeFile.Series.Value; - var seriesPath = series.Path; - var folder = message.EpisodeFile.Path.GetParentPath(); + return; + } - while (seriesPath.IsParentPath(folder)) - { - if (_diskProvider.FolderExists(folder)) - { - _diskProvider.RemoveEmptySubfolders(folder); - } + var series = message.EpisodeFile.Series.Value; + var seriesPath = series.Path; + var folder = message.EpisodeFile.Path.GetParentPath(); - folder = folder.GetParentPath(); + while (seriesPath.IsParentPath(folder)) + { + if (_diskProvider.FolderExists(folder)) + { + _diskProvider.RemoveEmptySubfolders(folder); } - _diskProvider.RemoveEmptySubfolders(seriesPath); + folder = folder.GetParentPath(); + } - if (_diskProvider.FolderEmpty(seriesPath)) - { - _diskProvider.DeleteFolder(seriesPath, true); - } + _diskProvider.RemoveEmptySubfolders(seriesPath); + + if (_diskProvider.FolderEmpty(seriesPath)) + { + _diskProvider.DeleteFolder(seriesPath, true); } } }