Fixed: Re-processing imported download causing task to fail

Fixes #3501
This commit is contained in:
Mark McDowall 2020-02-19 19:09:55 -08:00
parent 438d9eb717
commit bcc8b655f7
1 changed files with 27 additions and 17 deletions

View File

@ -105,33 +105,43 @@ namespace NzbDrone.Core.MediaFiles
public bool ShouldDeleteFolder(DirectoryInfo directoryInfo, Series series) public bool ShouldDeleteFolder(DirectoryInfo directoryInfo, Series series)
{ {
var videoFiles = _diskScanService.GetVideoFiles(directoryInfo.FullName); try
var rarFiles = _diskProvider.GetFiles(directoryInfo.FullName, SearchOption.AllDirectories).Where(f => Path.GetExtension(f).Equals(".rar", StringComparison.OrdinalIgnoreCase));
foreach (var videoFile in videoFiles)
{ {
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); 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 (rarFiles.Any(f => _diskProvider.GetFileSize(f) > 10.Megabytes()))
{
_logger.Warn("RAR file detected, will require manual cleanup");
return false; return false;
} }
if (_detectSample.IsSample(series, videoFile, episodeParseResult.IsPossibleSpecialEpisode) != DetectSampleResult.Sample) return true;
{
_logger.Warn("Non-sample file detected: [{0}]", videoFile);
return false;
}
} }
catch (DirectoryNotFoundException e)
if (rarFiles.Any(f => _diskProvider.GetFileSize(f) > 10.Megabytes()))
{ {
_logger.Warn("RAR file detected, will require manual cleanup"); _logger.Debug(e, "Folder {0} has already been removed", directoryInfo.FullName);
return false; return false;
} }
return true;
} }
private List<ImportResult> ProcessFolder(DirectoryInfo directoryInfo, ImportMode importMode, DownloadClientItem downloadClientItem) private List<ImportResult> ProcessFolder(DirectoryInfo directoryInfo, ImportMode importMode, DownloadClientItem downloadClientItem)