From bcc8b655f7cda574e6e16855d627e19d73da469c Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Wed, 19 Feb 2020 19:09:55 -0800 Subject: [PATCH] Fixed: Re-processing imported download causing task to fail Fixes #3501 --- .../DownloadedEpisodesImportService.cs | 40 ++++++++++++------- 1 file changed, 25 insertions(+), 15 deletions(-) diff --git a/src/NzbDrone.Core/MediaFiles/DownloadedEpisodesImportService.cs b/src/NzbDrone.Core/MediaFiles/DownloadedEpisodesImportService.cs index 79c05b0a2..63541212c 100644 --- a/src/NzbDrone.Core/MediaFiles/DownloadedEpisodesImportService.cs +++ b/src/NzbDrone.Core/MediaFiles/DownloadedEpisodesImportService.cs @@ -105,33 +105,43 @@ namespace NzbDrone.Core.MediaFiles public bool ShouldDeleteFolder(DirectoryInfo directoryInfo, Series series) { - var videoFiles = _diskScanService.GetVideoFiles(directoryInfo.FullName); - var rarFiles = _diskProvider.GetFiles(directoryInfo.FullName, SearchOption.AllDirectories).Where(f => Path.GetExtension(f).Equals(".rar", StringComparison.OrdinalIgnoreCase)); - - foreach (var videoFile in videoFiles) + try { - var episodeParseResult = Parser.Parser.ParseTitle(Path.GetFileName(videoFile)); + var videoFiles = _diskScanService.GetVideoFiles(directoryInfo.FullName); + var rarFiles = _diskProvider.GetFiles(directoryInfo.FullName, SearchOption.AllDirectories).Where(f => + Path.GetExtension(f).Equals(".rar", StringComparison.OrdinalIgnoreCase)); - if (episodeParseResult == null) + foreach (var videoFile in videoFiles) { - _logger.Warn("Unable to parse file on import: [{0}]", videoFile); - return false; + var episodeParseResult = Parser.Parser.ParseTitle(Path.GetFileName(videoFile)); + + if (episodeParseResult == null) + { + _logger.Warn("Unable to parse file on import: [{0}]", videoFile); + return false; + } + + if (_detectSample.IsSample(series, videoFile, episodeParseResult.IsPossibleSpecialEpisode) != + DetectSampleResult.Sample) + { + _logger.Warn("Non-sample file detected: [{0}]", videoFile); + return false; + } } - if (_detectSample.IsSample(series, videoFile, episodeParseResult.IsPossibleSpecialEpisode) != DetectSampleResult.Sample) + if (rarFiles.Any(f => _diskProvider.GetFileSize(f) > 10.Megabytes())) { - _logger.Warn("Non-sample file detected: [{0}]", videoFile); + _logger.Warn("RAR file detected, will require manual cleanup"); return false; } - } - if (rarFiles.Any(f => _diskProvider.GetFileSize(f) > 10.Megabytes())) + return true; + } + catch (DirectoryNotFoundException e) { - _logger.Warn("RAR file detected, will require manual cleanup"); + _logger.Debug(e, "Folder {0} has already been removed", directoryInfo.FullName); return false; } - - return true; } private List ProcessFolder(DirectoryInfo directoryInfo, ImportMode importMode, DownloadClientItem downloadClientItem)