Fixed: Deleted episodes not being unmonitored when series folder has been deleted

Closes #6678
This commit is contained in:
Mark McDowall 2024-04-02 20:59:08 -07:00 committed by Mark McDowall
parent 0937ee6fef
commit 6003ca1696
2 changed files with 27 additions and 19 deletions

View File

@ -174,10 +174,16 @@ namespace NzbDrone.Core.MediaFiles
fileInfoStopwatch.Stop(); fileInfoStopwatch.Stop();
_logger.Trace("Reprocessing existing files complete for: {0} [{1}]", series, decisionsStopwatch.Elapsed); _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); RemoveEmptySeriesFolder(series.Path);
var possibleExtraFiles = new List<string>();
if (_diskProvider.FolderExists(series.Path))
{
var extraFiles = GetNonVideoFiles(series.Path);
possibleExtraFiles = FilterPaths(series.Path, extraFiles);
}
CompletedScanning(series, possibleExtraFiles); CompletedScanning(series, possibleExtraFiles);
} }

View File

@ -129,28 +129,30 @@ namespace NzbDrone.Core.MediaFiles
[EventHandleOrder(EventHandleOrder.Last)] [EventHandleOrder(EventHandleOrder.Last)]
public void Handle(EpisodeFileDeletedEvent message) public void Handle(EpisodeFileDeletedEvent message)
{ {
if (_configService.DeleteEmptyFolders) if (!_configService.DeleteEmptyFolders || message.Reason == DeleteMediaFileReason.MissingFromDisk)
{ {
var series = message.EpisodeFile.Series.Value; return;
var seriesPath = series.Path; }
var folder = message.EpisodeFile.Path.GetParentPath();
while (seriesPath.IsParentPath(folder)) var series = message.EpisodeFile.Series.Value;
var seriesPath = series.Path;
var folder = message.EpisodeFile.Path.GetParentPath();
while (seriesPath.IsParentPath(folder))
{
if (_diskProvider.FolderExists(folder))
{ {
if (_diskProvider.FolderExists(folder)) _diskProvider.RemoveEmptySubfolders(folder);
{
_diskProvider.RemoveEmptySubfolders(folder);
}
folder = folder.GetParentPath();
} }
_diskProvider.RemoveEmptySubfolders(seriesPath); folder = folder.GetParentPath();
}
if (_diskProvider.FolderEmpty(seriesPath)) _diskProvider.RemoveEmptySubfolders(seriesPath);
{
_diskProvider.DeleteFolder(seriesPath, true); if (_diskProvider.FolderEmpty(seriesPath))
} {
_diskProvider.DeleteFolder(seriesPath, true);
} }
} }
} }