40 lines
1.2 KiB
C#
40 lines
1.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using NLog;
|
|
using NzbDrone.Core.Parser.Model;
|
|
|
|
namespace NzbDrone.Core.MediaFiles.EpisodeImport.Specifications
|
|
{
|
|
public class NotExistingFileSpecification : IImportDecisionEngineSpecification
|
|
{
|
|
private readonly Logger _logger;
|
|
|
|
public NotExistingFileSpecification(Logger logger)
|
|
{
|
|
_logger = logger;
|
|
}
|
|
|
|
public string RejectionReason { get { return "Existing File"; } }
|
|
|
|
public bool IsSatisfiedBy(LocalEpisode localEpisode)
|
|
{
|
|
var episodeFiles = localEpisode.Episodes.Where(e => e.EpisodeFileId > 0).Select(e => e.EpisodeFile.Value);
|
|
|
|
foreach (var episodeFile in episodeFiles)
|
|
{
|
|
if (Path.GetFileName(episodeFile.Path) == Path.GetFileName(localEpisode.Path) &&
|
|
episodeFile.Size == localEpisode.Size)
|
|
{
|
|
_logger.Trace("File is a match for an existing episode file: {0}", localEpisode.Path);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
}
|
|
}
|