From 48762a30133f17aeb3f88afd36accad667ba4edb Mon Sep 17 00:00:00 2001 From: ta264 Date: Tue, 18 Aug 2020 16:56:58 +0100 Subject: [PATCH] Fixed: Re-processing imported download causing task to fail --- .../DownloadedTracksImportService.cs | 36 +++++++++++-------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/src/NzbDrone.Core/MediaFiles/DownloadedTracksImportService.cs b/src/NzbDrone.Core/MediaFiles/DownloadedTracksImportService.cs index 94172f301..b618fac31 100644 --- a/src/NzbDrone.Core/MediaFiles/DownloadedTracksImportService.cs +++ b/src/NzbDrone.Core/MediaFiles/DownloadedTracksImportService.cs @@ -110,30 +110,38 @@ namespace NzbDrone.Core.MediaFiles public bool ShouldDeleteFolder(IDirectoryInfo directoryInfo, Artist artist) { - var audioFiles = _diskScanService.GetAudioFiles(directoryInfo.FullName); - var rarFiles = _diskProvider.GetFiles(directoryInfo.FullName, SearchOption.AllDirectories).Where(f => Path.GetExtension(f).Equals(".rar", StringComparison.OrdinalIgnoreCase)); - - foreach (var audioFile in audioFiles) + try { - var albumParseResult = Parser.Parser.ParseMusicTitle(audioFile.Name); + var audioFiles = _diskScanService.GetAudioFiles(directoryInfo.FullName); + var rarFiles = _diskProvider.GetFiles(directoryInfo.FullName, SearchOption.AllDirectories).Where(f => Path.GetExtension(f).Equals(".rar", StringComparison.OrdinalIgnoreCase)); - if (albumParseResult == null) + foreach (var audioFile in audioFiles) { - _logger.Warn("Unable to parse file on import: [{0}]", audioFile); + var albumParseResult = Parser.Parser.ParseMusicTitle(audioFile.Name); + + if (albumParseResult == null) + { + _logger.Warn("Unable to parse file on import: [{0}]", audioFile); + return false; + } + + _logger.Warn("Audio file detected: [{0}]", audioFile); return false; } - _logger.Warn("Audio file detected: [{0}]", audioFile); - return false; - } + if (rarFiles.Any(f => _diskProvider.GetFileSize(f) > 10.Megabytes())) + { + _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(IDirectoryInfo directoryInfo, ImportMode importMode, DownloadClientItem downloadClientItem)