diff --git a/src/NzbDrone.Core.Test/MediaFiles/DownloadedTracksImportServiceFixture.cs b/src/NzbDrone.Core.Test/MediaFiles/DownloadedTracksImportServiceFixture.cs index 3bc936e07..3b9aaa3d4 100644 --- a/src/NzbDrone.Core.Test/MediaFiles/DownloadedTracksImportServiceFixture.cs +++ b/src/NzbDrone.Core.Test/MediaFiles/DownloadedTracksImportServiceFixture.cs @@ -84,7 +84,7 @@ namespace NzbDrone.Core.Test.MediaFiles imported.Add(new ImportDecision(localTrack)); Mocker.GetMock() - .Setup(s => s.GetImportDecisions(It.IsAny>(), It.IsAny(), null)) + .Setup(s => s.GetImportDecisions(It.IsAny>(), It.IsAny(), It.IsAny(), null)) .Returns(imported); Mocker.GetMock() @@ -130,7 +130,7 @@ namespace NzbDrone.Core.Test.MediaFiles Subject.ProcessRootFolder(DiskProvider.GetDirectoryInfo(_droneFactory)); Mocker.GetMock() - .Verify(c => c.GetImportDecisions(It.IsAny>(), It.IsAny(), It.IsAny()), + .Verify(c => c.GetImportDecisions(It.IsAny>(), It.IsAny(), It.IsAny(), It.IsAny()), Times.Never()); VerifyNoImport(); @@ -181,7 +181,7 @@ namespace NzbDrone.Core.Test.MediaFiles imported.Add(new ImportDecision(localTrack)); Mocker.GetMock() - .Setup(s => s.GetImportDecisions(It.IsAny>(), It.IsAny(), null)) + .Setup(s => s.GetImportDecisions(It.IsAny>(), It.IsAny(), It.IsAny(), null)) .Returns(imported); Mocker.GetMock() @@ -238,7 +238,7 @@ namespace NzbDrone.Core.Test.MediaFiles imported.Add(new ImportDecision(localTrack)); Mocker.GetMock() - .Setup(s => s.GetImportDecisions(It.IsAny>(), It.IsAny(), null)) + .Setup(s => s.GetImportDecisions(It.IsAny>(), It.IsAny(), It.IsAny(), null)) .Returns(imported); Mocker.GetMock() @@ -278,7 +278,7 @@ namespace NzbDrone.Core.Test.MediaFiles imported.Add(new ImportDecision(localTrack)); Mocker.GetMock() - .Setup(s => s.GetImportDecisions(It.IsAny>(), It.IsAny(), null)) + .Setup(s => s.GetImportDecisions(It.IsAny>(), It.IsAny(), It.IsAny(), null)) .Returns(imported); Mocker.GetMock() diff --git a/src/NzbDrone.Core.Test/MediaFiles/TrackImport/ImportDecisionMakerFixture.cs b/src/NzbDrone.Core.Test/MediaFiles/TrackImport/ImportDecisionMakerFixture.cs index 08c8b957a..d11534897 100644 --- a/src/NzbDrone.Core.Test/MediaFiles/TrackImport/ImportDecisionMakerFixture.cs +++ b/src/NzbDrone.Core.Test/MediaFiles/TrackImport/ImportDecisionMakerFixture.cs @@ -65,21 +65,21 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport _fail2 = new Mock>(); _fail3 = new Mock>(); - _albumpass1.Setup(c => c.IsSatisfiedBy(It.IsAny())).Returns(Decision.Accept()); - _albumpass2.Setup(c => c.IsSatisfiedBy(It.IsAny())).Returns(Decision.Accept()); - _albumpass3.Setup(c => c.IsSatisfiedBy(It.IsAny())).Returns(Decision.Accept()); + _albumpass1.Setup(c => c.IsSatisfiedBy(It.IsAny(), It.IsAny())).Returns(Decision.Accept()); + _albumpass2.Setup(c => c.IsSatisfiedBy(It.IsAny(), It.IsAny())).Returns(Decision.Accept()); + _albumpass3.Setup(c => c.IsSatisfiedBy(It.IsAny(), It.IsAny())).Returns(Decision.Accept()); - _albumfail1.Setup(c => c.IsSatisfiedBy(It.IsAny())).Returns(Decision.Reject("_albumfail1")); - _albumfail2.Setup(c => c.IsSatisfiedBy(It.IsAny())).Returns(Decision.Reject("_albumfail2")); - _albumfail3.Setup(c => c.IsSatisfiedBy(It.IsAny())).Returns(Decision.Reject("_albumfail3")); + _albumfail1.Setup(c => c.IsSatisfiedBy(It.IsAny(), It.IsAny())).Returns(Decision.Reject("_albumfail1")); + _albumfail2.Setup(c => c.IsSatisfiedBy(It.IsAny(), It.IsAny())).Returns(Decision.Reject("_albumfail2")); + _albumfail3.Setup(c => c.IsSatisfiedBy(It.IsAny(), It.IsAny())).Returns(Decision.Reject("_albumfail3")); - _pass1.Setup(c => c.IsSatisfiedBy(It.IsAny())).Returns(Decision.Accept()); - _pass2.Setup(c => c.IsSatisfiedBy(It.IsAny())).Returns(Decision.Accept()); - _pass3.Setup(c => c.IsSatisfiedBy(It.IsAny())).Returns(Decision.Accept()); + _pass1.Setup(c => c.IsSatisfiedBy(It.IsAny(), It.IsAny())).Returns(Decision.Accept()); + _pass2.Setup(c => c.IsSatisfiedBy(It.IsAny(), It.IsAny())).Returns(Decision.Accept()); + _pass3.Setup(c => c.IsSatisfiedBy(It.IsAny(), It.IsAny())).Returns(Decision.Accept()); - _fail1.Setup(c => c.IsSatisfiedBy(It.IsAny())).Returns(Decision.Reject("_fail1")); - _fail2.Setup(c => c.IsSatisfiedBy(It.IsAny())).Returns(Decision.Reject("_fail2")); - _fail3.Setup(c => c.IsSatisfiedBy(It.IsAny())).Returns(Decision.Reject("_fail3")); + _fail1.Setup(c => c.IsSatisfiedBy(It.IsAny(), It.IsAny())).Returns(Decision.Reject("_fail1")); + _fail2.Setup(c => c.IsSatisfiedBy(It.IsAny(), It.IsAny())).Returns(Decision.Reject("_fail2")); + _fail3.Setup(c => c.IsSatisfiedBy(It.IsAny(), It.IsAny())).Returns(Decision.Reject("_fail3")); _artist = Builder.CreateNew() .With(e => e.QualityProfile = new QualityProfile { Items = Qualities.QualityFixture.GetDefaultQualities() }) @@ -150,12 +150,12 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport Subject.GetImportDecisions(_fileInfos, new Artist(), null, null, downloadClientItem, null, FilterFilesType.None, false, false, false); - _albumfail1.Verify(c => c.IsSatisfiedBy(It.IsAny()), Times.Once()); - _albumfail2.Verify(c => c.IsSatisfiedBy(It.IsAny()), Times.Once()); - _albumfail3.Verify(c => c.IsSatisfiedBy(It.IsAny()), Times.Once()); - _albumpass1.Verify(c => c.IsSatisfiedBy(It.IsAny()), Times.Once()); - _albumpass2.Verify(c => c.IsSatisfiedBy(It.IsAny()), Times.Once()); - _albumpass3.Verify(c => c.IsSatisfiedBy(It.IsAny()), Times.Once()); + _albumfail1.Verify(c => c.IsSatisfiedBy(It.IsAny(), It.IsAny()), Times.Once()); + _albumfail2.Verify(c => c.IsSatisfiedBy(It.IsAny(), It.IsAny()), Times.Once()); + _albumfail3.Verify(c => c.IsSatisfiedBy(It.IsAny(), It.IsAny()), Times.Once()); + _albumpass1.Verify(c => c.IsSatisfiedBy(It.IsAny(), It.IsAny()), Times.Once()); + _albumpass2.Verify(c => c.IsSatisfiedBy(It.IsAny(), It.IsAny()), Times.Once()); + _albumpass3.Verify(c => c.IsSatisfiedBy(It.IsAny(), It.IsAny()), Times.Once()); } [Test] @@ -167,12 +167,12 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport Subject.GetImportDecisions(_fileInfos, new Artist(), null, null, downloadClientItem, null, FilterFilesType.None, false, false, false); - _fail1.Verify(c => c.IsSatisfiedBy(It.IsAny()), Times.Once()); - _fail2.Verify(c => c.IsSatisfiedBy(It.IsAny()), Times.Once()); - _fail3.Verify(c => c.IsSatisfiedBy(It.IsAny()), Times.Once()); - _pass1.Verify(c => c.IsSatisfiedBy(It.IsAny()), Times.Once()); - _pass2.Verify(c => c.IsSatisfiedBy(It.IsAny()), Times.Once()); - _pass3.Verify(c => c.IsSatisfiedBy(It.IsAny()), Times.Once()); + _fail1.Verify(c => c.IsSatisfiedBy(It.IsAny(), It.IsAny()), Times.Once()); + _fail2.Verify(c => c.IsSatisfiedBy(It.IsAny(), It.IsAny()), Times.Once()); + _fail3.Verify(c => c.IsSatisfiedBy(It.IsAny(), It.IsAny()), Times.Once()); + _pass1.Verify(c => c.IsSatisfiedBy(It.IsAny(), It.IsAny()), Times.Once()); + _pass2.Verify(c => c.IsSatisfiedBy(It.IsAny(), It.IsAny()), Times.Once()); + _pass3.Verify(c => c.IsSatisfiedBy(It.IsAny(), It.IsAny()), Times.Once()); } [Test] @@ -185,12 +185,12 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport Subject.GetImportDecisions(_fileInfos, new Artist(), null, null, downloadClientItem, null, FilterFilesType.None, false, false, false); - _fail1.Verify(c => c.IsSatisfiedBy(It.IsAny()), Times.Never()); - _fail2.Verify(c => c.IsSatisfiedBy(It.IsAny()), Times.Never()); - _fail3.Verify(c => c.IsSatisfiedBy(It.IsAny()), Times.Never()); - _pass1.Verify(c => c.IsSatisfiedBy(It.IsAny()), Times.Never()); - _pass2.Verify(c => c.IsSatisfiedBy(It.IsAny()), Times.Never()); - _pass3.Verify(c => c.IsSatisfiedBy(It.IsAny()), Times.Never()); + _fail1.Verify(c => c.IsSatisfiedBy(It.IsAny(), It.IsAny()), Times.Never()); + _fail2.Verify(c => c.IsSatisfiedBy(It.IsAny(), It.IsAny()), Times.Never()); + _fail3.Verify(c => c.IsSatisfiedBy(It.IsAny(), It.IsAny()), Times.Never()); + _pass1.Verify(c => c.IsSatisfiedBy(It.IsAny(), It.IsAny()), Times.Never()); + _pass2.Verify(c => c.IsSatisfiedBy(It.IsAny(), It.IsAny()), Times.Never()); + _pass3.Verify(c => c.IsSatisfiedBy(It.IsAny(), It.IsAny()), Times.Never()); } [Test] diff --git a/src/NzbDrone.Core.Test/MediaFiles/TrackImport/Specifications/FreeSpaceSpecificationFixture.cs b/src/NzbDrone.Core.Test/MediaFiles/TrackImport/Specifications/FreeSpaceSpecificationFixture.cs index a470c786d..73073f617 100644 --- a/src/NzbDrone.Core.Test/MediaFiles/TrackImport/Specifications/FreeSpaceSpecificationFixture.cs +++ b/src/NzbDrone.Core.Test/MediaFiles/TrackImport/Specifications/FreeSpaceSpecificationFixture.cs @@ -61,7 +61,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Specifications GivenFileSize(100.Megabytes()); GivenFreeSpace(80.Megabytes()); - Subject.IsSatisfiedBy(_localTrack).Accepted.Should().BeFalse(); + Subject.IsSatisfiedBy(_localTrack, null).Accepted.Should().BeFalse(); ExceptionVerification.ExpectedWarns(1); } @@ -75,7 +75,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Specifications GivenFileSize(100.Megabytes()); GivenFreeSpace(150.Megabytes()); - Subject.IsSatisfiedBy(_localTrack).Accepted.Should().BeFalse(); + Subject.IsSatisfiedBy(_localTrack, null).Accepted.Should().BeFalse(); ExceptionVerification.ExpectedWarns(1); } @@ -85,7 +85,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Specifications GivenFileSize(100.Megabytes()); GivenFreeSpace(1.Gigabytes()); - Subject.IsSatisfiedBy(_localTrack).Accepted.Should().BeTrue(); + Subject.IsSatisfiedBy(_localTrack, null).Accepted.Should().BeTrue(); } [Test] @@ -94,7 +94,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Specifications GivenFileSize(100.Megabytes()); GivenFreeSpace(1.Gigabytes()); - Subject.IsSatisfiedBy(_localTrack).Accepted.Should().BeTrue(); + Subject.IsSatisfiedBy(_localTrack, null).Accepted.Should().BeTrue(); Mocker.GetMock() .Verify(v => v.GetAvailableSpace(_rootFolder), Times.Once()); @@ -106,7 +106,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Specifications GivenFileSize(100.Megabytes()); GivenFreeSpace(null); - Subject.IsSatisfiedBy(_localTrack).Accepted.Should().BeTrue(); + Subject.IsSatisfiedBy(_localTrack, null).Accepted.Should().BeTrue(); } [Test] @@ -118,7 +118,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Specifications .Setup(s => s.GetAvailableSpace(It.IsAny())) .Throws(new TestException()); - Subject.IsSatisfiedBy(_localTrack).Accepted.Should().BeTrue(); + Subject.IsSatisfiedBy(_localTrack, null).Accepted.Should().BeTrue(); ExceptionVerification.ExpectedErrors(1); } @@ -127,7 +127,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Specifications { _localTrack.ExistingFile = true; - Subject.IsSatisfiedBy(_localTrack).Accepted.Should().BeTrue(); + Subject.IsSatisfiedBy(_localTrack, null).Accepted.Should().BeTrue(); Mocker.GetMock() .Verify(s => s.GetAvailableSpace(It.IsAny()), Times.Never()); @@ -142,7 +142,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Specifications .Setup(s => s.GetAvailableSpace(It.IsAny())) .Returns(freeSpace); - Subject.IsSatisfiedBy(_localTrack).Accepted.Should().BeTrue(); + Subject.IsSatisfiedBy(_localTrack, null).Accepted.Should().BeTrue(); } [Test] @@ -152,7 +152,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Specifications .Setup(s => s.SkipFreeSpaceCheckWhenImporting) .Returns(true); - Subject.IsSatisfiedBy(_localTrack).Accepted.Should().BeTrue(); + Subject.IsSatisfiedBy(_localTrack, null).Accepted.Should().BeTrue(); } } } diff --git a/src/NzbDrone.Core.Test/MediaFiles/TrackImport/Specifications/NotUnpackingSpecificationFixture.cs b/src/NzbDrone.Core.Test/MediaFiles/TrackImport/Specifications/NotUnpackingSpecificationFixture.cs index f12a5f967..3f8cbc32f 100644 --- a/src/NzbDrone.Core.Test/MediaFiles/TrackImport/Specifications/NotUnpackingSpecificationFixture.cs +++ b/src/NzbDrone.Core.Test/MediaFiles/TrackImport/Specifications/NotUnpackingSpecificationFixture.cs @@ -48,7 +48,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Specifications [Test] public void should_return_true_if_not_in_working_folder() { - Subject.IsSatisfiedBy(_localTrack).Accepted.Should().BeTrue(); + Subject.IsSatisfiedBy(_localTrack, null).Accepted.Should().BeTrue(); } [Test] @@ -59,7 +59,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Specifications GivenInWorkingFolder(); GivenLastWriteTimeUtc(DateTime.UtcNow.AddHours(-1)); - Subject.IsSatisfiedBy(_localTrack).Accepted.Should().BeTrue(); + Subject.IsSatisfiedBy(_localTrack, null).Accepted.Should().BeTrue(); } [Test] @@ -68,7 +68,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Specifications GivenInWorkingFolder(); GivenLastWriteTimeUtc(DateTime.UtcNow); - Subject.IsSatisfiedBy(_localTrack).Accepted.Should().BeFalse(); + Subject.IsSatisfiedBy(_localTrack, null).Accepted.Should().BeFalse(); } [Test] @@ -79,7 +79,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Specifications GivenInWorkingFolder(); GivenLastWriteTimeUtc(DateTime.UtcNow.AddDays(-5)); - Subject.IsSatisfiedBy(_localTrack).Accepted.Should().BeFalse(); + Subject.IsSatisfiedBy(_localTrack, null).Accepted.Should().BeFalse(); } } } diff --git a/src/NzbDrone.Core.Test/MediaFiles/TrackImport/Specifications/SameFileSpecificationFixture.cs b/src/NzbDrone.Core.Test/MediaFiles/TrackImport/Specifications/SameFileSpecificationFixture.cs index 4fb6d1302..f5ff93d7a 100644 --- a/src/NzbDrone.Core.Test/MediaFiles/TrackImport/Specifications/SameFileSpecificationFixture.cs +++ b/src/NzbDrone.Core.Test/MediaFiles/TrackImport/Specifications/SameFileSpecificationFixture.cs @@ -32,7 +32,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Specifications .With(e => e.TrackFileId = 0) .BuildList(); - Subject.IsSatisfiedBy(_localTrack).Accepted.Should().BeTrue(); + Subject.IsSatisfiedBy(_localTrack, null).Accepted.Should().BeTrue(); } [Test] @@ -56,7 +56,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Specifications .Build() .ToList(); - Subject.IsSatisfiedBy(_localTrack).Accepted.Should().BeTrue(); + Subject.IsSatisfiedBy(_localTrack, null).Accepted.Should().BeTrue(); } [Test] @@ -73,7 +73,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Specifications .Build() .ToList(); - Subject.IsSatisfiedBy(_localTrack).Accepted.Should().BeTrue(); + Subject.IsSatisfiedBy(_localTrack, null).Accepted.Should().BeTrue(); } [Test] @@ -90,7 +90,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Specifications .Build() .ToList(); - Subject.IsSatisfiedBy(_localTrack).Accepted.Should().BeFalse(); + Subject.IsSatisfiedBy(_localTrack, null).Accepted.Should().BeFalse(); } } } diff --git a/src/NzbDrone.Core.Test/MediaFiles/TrackImport/Specifications/UpgradeSpecificationFixture.cs b/src/NzbDrone.Core.Test/MediaFiles/TrackImport/Specifications/UpgradeSpecificationFixture.cs index 55ca5fe33..61991b465 100644 --- a/src/NzbDrone.Core.Test/MediaFiles/TrackImport/Specifications/UpgradeSpecificationFixture.cs +++ b/src/NzbDrone.Core.Test/MediaFiles/TrackImport/Specifications/UpgradeSpecificationFixture.cs @@ -51,7 +51,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Specifications .Build() .ToList(); - Subject.IsSatisfiedBy(_localTrack).Accepted.Should().BeTrue(); + Subject.IsSatisfiedBy(_localTrack, null).Accepted.Should().BeTrue(); } [Test] @@ -64,7 +64,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Specifications .Build() .ToList(); - Subject.IsSatisfiedBy(_localTrack).Accepted.Should().BeTrue(); + Subject.IsSatisfiedBy(_localTrack, null).Accepted.Should().BeTrue(); } [Test] @@ -81,7 +81,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Specifications .Build() .ToList(); - Subject.IsSatisfiedBy(_localTrack).Accepted.Should().BeTrue(); + Subject.IsSatisfiedBy(_localTrack, null).Accepted.Should().BeTrue(); } [Test] @@ -98,7 +98,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Specifications .Build() .ToList(); - Subject.IsSatisfiedBy(_localTrack).Accepted.Should().BeTrue(); + Subject.IsSatisfiedBy(_localTrack, null).Accepted.Should().BeTrue(); } [Test] @@ -115,7 +115,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Specifications .Build() .ToList(); - Subject.IsSatisfiedBy(_localTrack).Accepted.Should().BeFalse(); + Subject.IsSatisfiedBy(_localTrack, null).Accepted.Should().BeFalse(); } [Test] @@ -132,7 +132,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Specifications .Build() .ToList(); - Subject.IsSatisfiedBy(_localTrack).Accepted.Should().BeFalse(); + Subject.IsSatisfiedBy(_localTrack, null).Accepted.Should().BeFalse(); } [Test] @@ -156,7 +156,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Specifications .Build() .ToList(); - Subject.IsSatisfiedBy(_localTrack).Accepted.Should().BeFalse(); + Subject.IsSatisfiedBy(_localTrack, null).Accepted.Should().BeFalse(); } [Test] @@ -177,7 +177,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Specifications .Build() .ToList(); - Subject.IsSatisfiedBy(_localTrack).Accepted.Should().BeFalse(); + Subject.IsSatisfiedBy(_localTrack, null).Accepted.Should().BeFalse(); } [Test] @@ -198,7 +198,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Specifications .Build() .ToList(); - Subject.IsSatisfiedBy(_localTrack).Accepted.Should().BeTrue(); + Subject.IsSatisfiedBy(_localTrack, null).Accepted.Should().BeTrue(); } [Test] @@ -221,7 +221,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Specifications .Build() .ToList(); - Subject.IsSatisfiedBy(_localTrack).Accepted.Should().BeTrue(); + Subject.IsSatisfiedBy(_localTrack, null).Accepted.Should().BeTrue(); } [Test] @@ -234,7 +234,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Specifications .Build() .ToList(); - Subject.IsSatisfiedBy(_localTrack).Accepted.Should().BeTrue(); + Subject.IsSatisfiedBy(_localTrack, null).Accepted.Should().BeTrue(); } } } diff --git a/src/NzbDrone.Core/MediaFiles/DownloadedTracksImportService.cs b/src/NzbDrone.Core/MediaFiles/DownloadedTracksImportService.cs index 274985f0a..14297a488 100644 --- a/src/NzbDrone.Core/MediaFiles/DownloadedTracksImportService.cs +++ b/src/NzbDrone.Core/MediaFiles/DownloadedTracksImportService.cs @@ -200,7 +200,7 @@ namespace NzbDrone.Core.MediaFiles } } - var decisions = _importDecisionMaker.GetImportDecisions(audioFiles, artist, trackInfo); + var decisions = _importDecisionMaker.GetImportDecisions(audioFiles, artist, downloadClientItem, trackInfo); var importResults = _importApprovedTracks.Import(decisions, true, downloadClientItem, importMode); if (importMode == ImportMode.Auto) @@ -259,7 +259,7 @@ namespace NzbDrone.Core.MediaFiles } } - var decisions = _importDecisionMaker.GetImportDecisions(new List() { fileInfo }, artist, null); + var decisions = _importDecisionMaker.GetImportDecisions(new List() { fileInfo }, artist, downloadClientItem, null); return _importApprovedTracks.Import(decisions, true, downloadClientItem, importMode); } diff --git a/src/NzbDrone.Core/MediaFiles/TrackImport/IImportDecisionEngineSpecification.cs b/src/NzbDrone.Core/MediaFiles/TrackImport/IImportDecisionEngineSpecification.cs index 9c4703435..0d6a0fdb7 100644 --- a/src/NzbDrone.Core/MediaFiles/TrackImport/IImportDecisionEngineSpecification.cs +++ b/src/NzbDrone.Core/MediaFiles/TrackImport/IImportDecisionEngineSpecification.cs @@ -1,9 +1,10 @@ using NzbDrone.Core.DecisionEngine; +using NzbDrone.Core.Download; namespace NzbDrone.Core.MediaFiles.TrackImport { public interface IImportDecisionEngineSpecification { - Decision IsSatisfiedBy(T item); + Decision IsSatisfiedBy(T item, DownloadClientItem downloadClientItem); } } diff --git a/src/NzbDrone.Core/MediaFiles/TrackImport/ImportDecisionMaker.cs b/src/NzbDrone.Core/MediaFiles/TrackImport/ImportDecisionMaker.cs index 4c5200631..e1ebc3df2 100644 --- a/src/NzbDrone.Core/MediaFiles/TrackImport/ImportDecisionMaker.cs +++ b/src/NzbDrone.Core/MediaFiles/TrackImport/ImportDecisionMaker.cs @@ -18,7 +18,7 @@ namespace NzbDrone.Core.MediaFiles.TrackImport public interface IMakeImportDecision { List> GetImportDecisions(List musicFiles, Artist artist, FilterFilesType filter, bool includeExisting); - List> GetImportDecisions(List musicFiles, Artist artist, ParsedTrackInfo folderInfo); + List> GetImportDecisions(List musicFiles, Artist artist, DownloadClientItem downloadClientItem, ParsedTrackInfo folderInfo); List> GetImportDecisions(List musicFiles, Artist artist, Album album, AlbumRelease albumRelease, DownloadClientItem downloadClientItem, ParsedTrackInfo folderInfo, FilterFilesType filter, bool newDownload, bool singleRelease, bool includeExisting); } @@ -66,9 +66,9 @@ namespace NzbDrone.Core.MediaFiles.TrackImport return GetImportDecisions(musicFiles, artist, null, null, null, null, filter, false, false, true); } - public List> GetImportDecisions(List musicFiles, Artist artist, ParsedTrackInfo folderInfo) + public List> GetImportDecisions(List musicFiles, Artist artist, DownloadClientItem downloadClientItem, ParsedTrackInfo folderInfo) { - return GetImportDecisions(musicFiles, artist, null, null, null, folderInfo, FilterFilesType.None, true, false, false); + return GetImportDecisions(musicFiles, artist, null, null, downloadClientItem, folderInfo, FilterFilesType.None, true, false, false); } public List> GetImportDecisions(List musicFiles, Artist artist, Album album, AlbumRelease albumRelease, DownloadClientItem downloadClientItem, ParsedTrackInfo folderInfo, FilterFilesType filter, bool newDownload, bool singleRelease, bool includeExisting) @@ -136,13 +136,13 @@ namespace NzbDrone.Core.MediaFiles.TrackImport foreach (var release in releases) { release.NewDownload = newDownload; - var releaseDecision = GetDecision(release); + var releaseDecision = GetDecision(release, downloadClientItem); foreach (var localTrack in release.LocalTracks) { if (releaseDecision.Approved) { - decisions.AddIfNotNull(GetDecision(localTrack)); + decisions.AddIfNotNull(GetDecision(localTrack, downloadClientItem)); } else { @@ -154,7 +154,7 @@ namespace NzbDrone.Core.MediaFiles.TrackImport return decisions; } - private ImportDecision GetDecision(LocalAlbumRelease localAlbumRelease) + private ImportDecision GetDecision(LocalAlbumRelease localAlbumRelease, DownloadClientItem downloadClientItem) { ImportDecision decision = null; @@ -164,7 +164,7 @@ namespace NzbDrone.Core.MediaFiles.TrackImport } else { - var reasons = _albumSpecifications.Select(c => EvaluateSpec(c, localAlbumRelease)) + var reasons = _albumSpecifications.Select(c => EvaluateSpec(c, localAlbumRelease, downloadClientItem)) .Where(c => c != null); decision = new ImportDecision(localAlbumRelease, reasons.ToArray()); @@ -186,7 +186,7 @@ namespace NzbDrone.Core.MediaFiles.TrackImport return decision; } - private ImportDecision GetDecision(LocalTrack localTrack) + private ImportDecision GetDecision(LocalTrack localTrack, DownloadClientItem downloadClientItem) { ImportDecision decision = null; @@ -197,7 +197,7 @@ namespace NzbDrone.Core.MediaFiles.TrackImport } else { - var reasons = _trackSpecifications.Select(c => EvaluateSpec(c, localTrack)) + var reasons = _trackSpecifications.Select(c => EvaluateSpec(c, localTrack, downloadClientItem)) .Where(c => c != null); decision = new ImportDecision(localTrack, reasons.ToArray()); @@ -219,11 +219,11 @@ namespace NzbDrone.Core.MediaFiles.TrackImport return decision; } - private Rejection EvaluateSpec(IImportDecisionEngineSpecification spec, T item) + private Rejection EvaluateSpec(IImportDecisionEngineSpecification spec, T item, DownloadClientItem downloadClientItem) { try { - var result = spec.IsSatisfiedBy(item); + var result = spec.IsSatisfiedBy(item, downloadClientItem); if (!result.Accepted) { diff --git a/src/NzbDrone.Core/MediaFiles/TrackImport/Manual/ManualImportService.cs b/src/NzbDrone.Core/MediaFiles/TrackImport/Manual/ManualImportService.cs index 8e3776535..8fbad9c78 100644 --- a/src/NzbDrone.Core/MediaFiles/TrackImport/Manual/ManualImportService.cs +++ b/src/NzbDrone.Core/MediaFiles/TrackImport/Manual/ManualImportService.cs @@ -105,18 +105,24 @@ namespace NzbDrone.Core.MediaFiles.TrackImport.Manual private List ProcessFolder(string folder, string downloadId, FilterFilesType filter, bool replaceExistingFiles) { + DownloadClientItem downloadClientItem = null; var directoryInfo = new DirectoryInfo(folder); var artist = _parsingService.GetArtist(directoryInfo.Name); - if (artist == null && downloadId.IsNotNullOrWhiteSpace()) + if (downloadId.IsNotNullOrWhiteSpace()) { var trackedDownload = _trackedDownloadService.Find(downloadId); - artist = trackedDownload.RemoteAlbum?.Artist; + downloadClientItem = trackedDownload.DownloadItem; + + if (artist == null) + { + artist = trackedDownload.RemoteAlbum?.Artist; + } } var folderInfo = Parser.Parser.ParseMusicTitle(directoryInfo.Name); var artistFiles = _diskScanService.GetAudioFiles(folder).ToList(); - var decisions = _importDecisionMaker.GetImportDecisions(artistFiles, artist, null, null, null, folderInfo, filter, true, false, !replaceExistingFiles); + var decisions = _importDecisionMaker.GetImportDecisions(artistFiles, artist, null, null, downloadClientItem, folderInfo, filter, true, false, !replaceExistingFiles); // paths will be different for new and old files which is why we need to map separately var newFiles = artistFiles.Join(decisions, diff --git a/src/NzbDrone.Core/MediaFiles/TrackImport/Specifications/AlbumUpgradeSpecification.cs b/src/NzbDrone.Core/MediaFiles/TrackImport/Specifications/AlbumUpgradeSpecification.cs index c383a33f5..ddaa0b7b9 100644 --- a/src/NzbDrone.Core/MediaFiles/TrackImport/Specifications/AlbumUpgradeSpecification.cs +++ b/src/NzbDrone.Core/MediaFiles/TrackImport/Specifications/AlbumUpgradeSpecification.cs @@ -1,6 +1,7 @@ using System.Linq; using NLog; using NzbDrone.Core.DecisionEngine; +using NzbDrone.Core.Download; using NzbDrone.Core.Parser.Model; using NzbDrone.Core.Qualities; @@ -15,20 +16,20 @@ namespace NzbDrone.Core.MediaFiles.TrackImport.Specifications _logger = logger; } - public Decision IsSatisfiedBy(LocalAlbumRelease localAlbumRelease) + public Decision IsSatisfiedBy(LocalAlbumRelease item, DownloadClientItem downloadClientItem) { - var artist = localAlbumRelease.AlbumRelease.Album.Value.Artist.Value; + var artist = item.AlbumRelease.Album.Value.Artist.Value; var qualityComparer = new QualityModelComparer(artist.QualityProfile); // check if we are changing release - var currentRelease = localAlbumRelease.AlbumRelease.Album.Value.AlbumReleases.Value.Single(x => x.Monitored); - var newRelease = localAlbumRelease.AlbumRelease; + var currentRelease = item.AlbumRelease.Album.Value.AlbumReleases.Value.Single(x => x.Monitored); + var newRelease = item.AlbumRelease; // if we are, check we are upgrading if (newRelease.Id != currentRelease.Id) { // min quality of all new tracks - var newMinQuality = localAlbumRelease.LocalTracks.Select(x => x.Quality).OrderBy(x => x, qualityComparer).First(); + var newMinQuality = item.LocalTracks.Select(x => x.Quality).OrderBy(x => x, qualityComparer).First(); _logger.Debug("Min quality of new files: {0}", newMinQuality); // get minimum quality of existing release @@ -39,7 +40,7 @@ namespace NzbDrone.Core.MediaFiles.TrackImport.Specifications _logger.Debug("Min quality of existing files: {0}", existingMinQuality); if (qualityComparer.Compare(existingMinQuality, newMinQuality) > 0) { - _logger.Debug("This album isn't a quality upgrade for all tracks. Skipping {0}", localAlbumRelease); + _logger.Debug("This album isn't a quality upgrade for all tracks. Skipping {0}", item); return Decision.Reject("Not an upgrade for existing album file(s)"); } } diff --git a/src/NzbDrone.Core/MediaFiles/TrackImport/Specifications/CloseAlbumMatchSpecification.cs b/src/NzbDrone.Core/MediaFiles/TrackImport/Specifications/CloseAlbumMatchSpecification.cs index 7daae0e6f..0db4334d5 100644 --- a/src/NzbDrone.Core/MediaFiles/TrackImport/Specifications/CloseAlbumMatchSpecification.cs +++ b/src/NzbDrone.Core/MediaFiles/TrackImport/Specifications/CloseAlbumMatchSpecification.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using NLog; using NzbDrone.Core.DecisionEngine; +using NzbDrone.Core.Download; using NzbDrone.Core.Parser.Model; namespace NzbDrone.Core.MediaFiles.TrackImport.Specifications @@ -17,23 +18,23 @@ namespace NzbDrone.Core.MediaFiles.TrackImport.Specifications _logger = logger; } - public Decision IsSatisfiedBy(LocalAlbumRelease localAlbumRelease) + public Decision IsSatisfiedBy(LocalAlbumRelease item, DownloadClientItem downloadClientItem) { double dist; string reasons; // strict when a new download - if (localAlbumRelease.NewDownload) + if (item.NewDownload) { - dist = localAlbumRelease.Distance.NormalizedDistance(); - reasons = localAlbumRelease.Distance.Reasons; + dist = item.Distance.NormalizedDistance(); + reasons = item.Distance.Reasons; if (dist > _albumThreshold) { - _logger.Debug($"Album match is not close enough: {dist} vs {_albumThreshold} {reasons}. Skipping {localAlbumRelease}"); + _logger.Debug($"Album match is not close enough: {dist} vs {_albumThreshold} {reasons}. Skipping {item}"); return Decision.Reject($"Album match is not close enough: {1 - dist:P1} vs {1 - _albumThreshold:P0} {reasons}"); } - var worstTrackMatch = localAlbumRelease.LocalTracks.Where(x => x.Distance != null).OrderByDescending(x => x.Distance.NormalizedDistance()).FirstOrDefault(); + var worstTrackMatch = item.LocalTracks.Where(x => x.Distance != null).OrderByDescending(x => x.Distance.NormalizedDistance()).FirstOrDefault(); if (worstTrackMatch == null) { _logger.Debug($"No tracks matched"); @@ -45,7 +46,7 @@ namespace NzbDrone.Core.MediaFiles.TrackImport.Specifications var trackReasons = worstTrackMatch.Distance.Reasons; if (maxTrackDist > _trackThreshold) { - _logger.Debug($"Worst track match: {maxTrackDist} vs {_trackThreshold} {trackReasons}. Skipping {localAlbumRelease}"); + _logger.Debug($"Worst track match: {maxTrackDist} vs {_trackThreshold} {trackReasons}. Skipping {item}"); return Decision.Reject($"Worst track match: {1 - maxTrackDist:P1} vs {1 - _trackThreshold:P0} {trackReasons}"); } } @@ -55,16 +56,16 @@ namespace NzbDrone.Core.MediaFiles.TrackImport.Specifications else { // get album distance ignoring whether tracks are missing - dist = localAlbumRelease.Distance.NormalizedDistanceExcluding(new List { "missing_tracks", "unmatched_tracks" }); - reasons = localAlbumRelease.Distance.Reasons; + dist = item.Distance.NormalizedDistanceExcluding(new List { "missing_tracks", "unmatched_tracks" }); + reasons = item.Distance.Reasons; if (dist > _albumThreshold) { - _logger.Debug($"Album match is not close enough: {dist} vs {_albumThreshold} {reasons}. Skipping {localAlbumRelease}"); + _logger.Debug($"Album match is not close enough: {dist} vs {_albumThreshold} {reasons}. Skipping {item}"); return Decision.Reject($"Album match is not close enough: {1 - dist:P1} vs {1 - _albumThreshold:P0} {reasons}"); } } - _logger.Debug($"Accepting release {localAlbumRelease}: dist {dist} vs {_albumThreshold} {reasons}"); + _logger.Debug($"Accepting release {item}: dist {dist} vs {_albumThreshold} {reasons}"); return Decision.Accept(); } } diff --git a/src/NzbDrone.Core/MediaFiles/TrackImport/Specifications/CloseTrackMatchSpecification.cs b/src/NzbDrone.Core/MediaFiles/TrackImport/Specifications/CloseTrackMatchSpecification.cs index 9bb9c5186..11ffe237a 100644 --- a/src/NzbDrone.Core/MediaFiles/TrackImport/Specifications/CloseTrackMatchSpecification.cs +++ b/src/NzbDrone.Core/MediaFiles/TrackImport/Specifications/CloseTrackMatchSpecification.cs @@ -1,5 +1,6 @@ using NLog; using NzbDrone.Core.DecisionEngine; +using NzbDrone.Core.Download; using NzbDrone.Core.Parser.Model; namespace NzbDrone.Core.MediaFiles.TrackImport.Specifications @@ -14,14 +15,14 @@ namespace NzbDrone.Core.MediaFiles.TrackImport.Specifications _logger = logger; } - public Decision IsSatisfiedBy(LocalTrack localTrack) + public Decision IsSatisfiedBy(LocalTrack item, DownloadClientItem downloadClientItem) { - var dist = localTrack.Distance.NormalizedDistance(); - var reasons = localTrack.Distance.Reasons; + var dist = item.Distance.NormalizedDistance(); + var reasons = item.Distance.Reasons; if (dist > _threshold) { - _logger.Debug($"Track match is not close enough: {dist} vs {_threshold} {reasons}. Skipping {localTrack}"); + _logger.Debug($"Track match is not close enough: {dist} vs {_threshold} {reasons}. Skipping {item}"); return Decision.Reject($"Track match is not close enough: {1 - dist:P1} vs {1 - _threshold:P0} {reasons}"); } diff --git a/src/NzbDrone.Core/MediaFiles/TrackImport/Specifications/FreeSpaceSpecification.cs b/src/NzbDrone.Core/MediaFiles/TrackImport/Specifications/FreeSpaceSpecification.cs index 22c7c0a42..37b310cc1 100644 --- a/src/NzbDrone.Core/MediaFiles/TrackImport/Specifications/FreeSpaceSpecification.cs +++ b/src/NzbDrone.Core/MediaFiles/TrackImport/Specifications/FreeSpaceSpecification.cs @@ -4,6 +4,7 @@ using NLog; using NzbDrone.Common.Disk; using NzbDrone.Core.Configuration; using NzbDrone.Core.DecisionEngine; +using NzbDrone.Core.Download; using NzbDrone.Core.Parser.Model; namespace NzbDrone.Core.MediaFiles.TrackImport.Specifications @@ -21,7 +22,7 @@ namespace NzbDrone.Core.MediaFiles.TrackImport.Specifications _logger = logger; } - public Decision IsSatisfiedBy(LocalTrack localTrack) + public Decision IsSatisfiedBy(LocalTrack item, DownloadClientItem downloadClientItem) { if (_configService.SkipFreeSpaceCheckWhenImporting) { @@ -31,13 +32,13 @@ namespace NzbDrone.Core.MediaFiles.TrackImport.Specifications try { - if (localTrack.ExistingFile) + if (item.ExistingFile) { _logger.Debug("Skipping free space check for existing track"); return Decision.Accept(); } - var path = Directory.GetParent(localTrack.Artist.Path); + var path = Directory.GetParent(item.Artist.Path); var freeSpace = _diskProvider.GetAvailableSpace(path.FullName); if (!freeSpace.HasValue) @@ -46,9 +47,9 @@ namespace NzbDrone.Core.MediaFiles.TrackImport.Specifications return Decision.Accept(); } - if (freeSpace < localTrack.Size + _configService.MinimumFreeSpaceWhenImporting.Megabytes()) + if (freeSpace < item.Size + _configService.MinimumFreeSpaceWhenImporting.Megabytes()) { - _logger.Warn("Not enough free space ({0}) to import: {1} ({2})", freeSpace, localTrack, localTrack.Size); + _logger.Warn("Not enough free space ({0}) to import: {1} ({2})", freeSpace, item, item.Size); return Decision.Reject("Not enough free space"); } } @@ -58,7 +59,7 @@ namespace NzbDrone.Core.MediaFiles.TrackImport.Specifications } catch (Exception ex) { - _logger.Error(ex, "Unable to check free disk space while importing. {0}", localTrack.Path); + _logger.Error(ex, "Unable to check free disk space while importing. {0}", item.Path); } return Decision.Accept(); diff --git a/src/NzbDrone.Core/MediaFiles/TrackImport/Specifications/MoreTracksSpecification.cs b/src/NzbDrone.Core/MediaFiles/TrackImport/Specifications/MoreTracksSpecification.cs index d1cb5ae61..36454d3f2 100644 --- a/src/NzbDrone.Core/MediaFiles/TrackImport/Specifications/MoreTracksSpecification.cs +++ b/src/NzbDrone.Core/MediaFiles/TrackImport/Specifications/MoreTracksSpecification.cs @@ -1,6 +1,7 @@ using System.Linq; using NLog; using NzbDrone.Core.DecisionEngine; +using NzbDrone.Core.Download; using NzbDrone.Core.Parser.Model; namespace NzbDrone.Core.MediaFiles.TrackImport.Specifications @@ -14,18 +15,18 @@ namespace NzbDrone.Core.MediaFiles.TrackImport.Specifications _logger = logger; } - public Decision IsSatisfiedBy(LocalAlbumRelease localAlbumRelease) + public Decision IsSatisfiedBy(LocalAlbumRelease item, DownloadClientItem downloadClientItem) { - var existingRelease = localAlbumRelease.AlbumRelease.Album.Value.AlbumReleases.Value.Single(x => x.Monitored); + var existingRelease = item.AlbumRelease.Album.Value.AlbumReleases.Value.Single(x => x.Monitored); var existingTrackCount = existingRelease.Tracks.Value.Count(x => x.HasFile); - if (localAlbumRelease.AlbumRelease.Id != existingRelease.Id && - localAlbumRelease.TrackCount < existingTrackCount) + if (item.AlbumRelease.Id != existingRelease.Id && + item.TrackCount < existingTrackCount) { - _logger.Debug($"This release has fewer tracks ({localAlbumRelease.TrackCount}) than existing {existingRelease} ({existingTrackCount}). Skipping {localAlbumRelease}"); + _logger.Debug($"This release has fewer tracks ({item.TrackCount}) than existing {existingRelease} ({existingTrackCount}). Skipping {item}"); return Decision.Reject("Has fewer tracks than existing release"); } - _logger.Trace("Accepting release {0}", localAlbumRelease); + _logger.Trace("Accepting release {0}", item); return Decision.Accept(); } } diff --git a/src/NzbDrone.Core/MediaFiles/TrackImport/Specifications/NoMissingOrUnmatchedTracksSpecification.cs b/src/NzbDrone.Core/MediaFiles/TrackImport/Specifications/NoMissingOrUnmatchedTracksSpecification.cs index 510eaa76c..d54fe89e9 100644 --- a/src/NzbDrone.Core/MediaFiles/TrackImport/Specifications/NoMissingOrUnmatchedTracksSpecification.cs +++ b/src/NzbDrone.Core/MediaFiles/TrackImport/Specifications/NoMissingOrUnmatchedTracksSpecification.cs @@ -1,5 +1,6 @@ using NLog; using NzbDrone.Core.DecisionEngine; +using NzbDrone.Core.Download; using NzbDrone.Core.Parser.Model; namespace NzbDrone.Core.MediaFiles.TrackImport.Specifications @@ -13,17 +14,17 @@ namespace NzbDrone.Core.MediaFiles.TrackImport.Specifications _logger = logger; } - public Decision IsSatisfiedBy(LocalAlbumRelease localAlbumRelease) + public Decision IsSatisfiedBy(LocalAlbumRelease item, DownloadClientItem downloadClientItem) { - if (localAlbumRelease.NewDownload && localAlbumRelease.TrackMapping.LocalExtra.Count > 0) + if (item.NewDownload && item.TrackMapping.LocalExtra.Count > 0) { - _logger.Debug("This release has track files that have not been matched. Skipping {0}", localAlbumRelease); + _logger.Debug("This release has track files that have not been matched. Skipping {0}", item); return Decision.Reject("Has unmatched tracks"); } - if (localAlbumRelease.NewDownload && localAlbumRelease.TrackMapping.MBExtra.Count > 0) + if (item.NewDownload && item.TrackMapping.MBExtra.Count > 0) { - _logger.Debug("This release is missing tracks. Skipping {0}", localAlbumRelease); + _logger.Debug("This release is missing tracks. Skipping {0}", item); return Decision.Reject("Has missing tracks"); } diff --git a/src/NzbDrone.Core/MediaFiles/TrackImport/Specifications/NotUnpackingSpecification.cs b/src/NzbDrone.Core/MediaFiles/TrackImport/Specifications/NotUnpackingSpecification.cs index 01f27de8d..8f95b3e4c 100644 --- a/src/NzbDrone.Core/MediaFiles/TrackImport/Specifications/NotUnpackingSpecification.cs +++ b/src/NzbDrone.Core/MediaFiles/TrackImport/Specifications/NotUnpackingSpecification.cs @@ -5,6 +5,7 @@ using NzbDrone.Common.Disk; using NzbDrone.Common.EnvironmentInfo; using NzbDrone.Core.Configuration; using NzbDrone.Core.DecisionEngine; +using NzbDrone.Core.Download; using NzbDrone.Core.Parser.Model; namespace NzbDrone.Core.MediaFiles.TrackImport.Specifications @@ -22,30 +23,30 @@ namespace NzbDrone.Core.MediaFiles.TrackImport.Specifications _logger = logger; } - public Decision IsSatisfiedBy(LocalTrack localTrack) + public Decision IsSatisfiedBy(LocalTrack item, DownloadClientItem downloadClientItem) { - if (localTrack.ExistingFile) + if (item.ExistingFile) { - _logger.Debug("{0} is in artist folder, skipping unpacking check", localTrack.Path); + _logger.Debug("{0} is in artist folder, skipping unpacking check", item.Path); return Decision.Accept(); } foreach (var workingFolder in _configService.DownloadClientWorkingFolders.Split('|')) { - DirectoryInfo parent = Directory.GetParent(localTrack.Path); + DirectoryInfo parent = Directory.GetParent(item.Path); while (parent != null) { if (parent.Name.StartsWith(workingFolder)) { if (OsInfo.IsNotWindows) { - _logger.Debug("{0} is still being unpacked", localTrack.Path); + _logger.Debug("{0} is still being unpacked", item.Path); return Decision.Reject("File is still being unpacked"); } - if (_diskProvider.FileGetLastWrite(localTrack.Path) > DateTime.UtcNow.AddMinutes(-5)) + if (_diskProvider.FileGetLastWrite(item.Path) > DateTime.UtcNow.AddMinutes(-5)) { - _logger.Debug("{0} appears to be unpacking still", localTrack.Path); + _logger.Debug("{0} appears to be unpacking still", item.Path); return Decision.Reject("File is still being unpacked"); } } diff --git a/src/NzbDrone.Core/MediaFiles/TrackImport/Specifications/ReleaseWantedSpecification.cs b/src/NzbDrone.Core/MediaFiles/TrackImport/Specifications/ReleaseWantedSpecification.cs index d5022b8d6..269dd2082 100644 --- a/src/NzbDrone.Core/MediaFiles/TrackImport/Specifications/ReleaseWantedSpecification.cs +++ b/src/NzbDrone.Core/MediaFiles/TrackImport/Specifications/ReleaseWantedSpecification.cs @@ -1,5 +1,6 @@ using NLog; using NzbDrone.Core.DecisionEngine; +using NzbDrone.Core.Download; using NzbDrone.Core.Parser.Model; namespace NzbDrone.Core.MediaFiles.TrackImport.Specifications @@ -13,14 +14,14 @@ namespace NzbDrone.Core.MediaFiles.TrackImport.Specifications _logger = logger; } - public Decision IsSatisfiedBy(LocalAlbumRelease localAlbumRelease) + public Decision IsSatisfiedBy(LocalAlbumRelease item, DownloadClientItem downloadClientItem) { - if (localAlbumRelease.AlbumRelease.Monitored || localAlbumRelease.AlbumRelease.Album.Value.AnyReleaseOk) + if (item.AlbumRelease.Monitored || item.AlbumRelease.Album.Value.AnyReleaseOk) { return Decision.Accept(); } - _logger.Debug("AlbumRelease {0} was not requested", localAlbumRelease); + _logger.Debug("AlbumRelease {0} was not requested", item); return Decision.Reject("Album release not requested"); } } diff --git a/src/NzbDrone.Core/MediaFiles/TrackImport/Specifications/SameFileSpecification.cs b/src/NzbDrone.Core/MediaFiles/TrackImport/Specifications/SameFileSpecification.cs index b4124601b..1453c4e2f 100644 --- a/src/NzbDrone.Core/MediaFiles/TrackImport/Specifications/SameFileSpecification.cs +++ b/src/NzbDrone.Core/MediaFiles/TrackImport/Specifications/SameFileSpecification.cs @@ -1,6 +1,7 @@ using System.Linq; using NLog; using NzbDrone.Core.DecisionEngine; +using NzbDrone.Core.Download; using NzbDrone.Core.Parser.Model; namespace NzbDrone.Core.MediaFiles.TrackImport.Specifications @@ -14,9 +15,9 @@ namespace NzbDrone.Core.MediaFiles.TrackImport.Specifications _logger = logger; } - public Decision IsSatisfiedBy(LocalTrack localTrack) + public Decision IsSatisfiedBy(LocalTrack item, DownloadClientItem downloadClientItem) { - var trackFiles = localTrack.Tracks.Where(e => e.TrackFileId != 0).Select(e => e.TrackFile).ToList(); + var trackFiles = item.Tracks.Where(e => e.TrackFileId != 0).Select(e => e.TrackFile).ToList(); if (trackFiles.Count == 0) { @@ -30,9 +31,9 @@ namespace NzbDrone.Core.MediaFiles.TrackImport.Specifications return Decision.Accept(); } - if (trackFiles.First().Value.Size == localTrack.Size) + if (trackFiles.First().Value.Size == item.Size) { - _logger.Debug("'{0}' Has the same filesize as existing file", localTrack.Path); + _logger.Debug("'{0}' Has the same filesize as existing file", item.Path); return Decision.Reject("Has the same filesize as existing file"); } diff --git a/src/NzbDrone.Core/MediaFiles/TrackImport/Specifications/SameTracksImportSpecification.cs b/src/NzbDrone.Core/MediaFiles/TrackImport/Specifications/SameTracksImportSpecification.cs index 28519db91..d51e390bc 100644 --- a/src/NzbDrone.Core/MediaFiles/TrackImport/Specifications/SameTracksImportSpecification.cs +++ b/src/NzbDrone.Core/MediaFiles/TrackImport/Specifications/SameTracksImportSpecification.cs @@ -1,6 +1,7 @@ using NLog; using NzbDrone.Core.DecisionEngine; using NzbDrone.Core.DecisionEngine.Specifications; +using NzbDrone.Core.Download; using NzbDrone.Core.Parser.Model; namespace NzbDrone.Core.MediaFiles.TrackImport.Specifications @@ -18,9 +19,9 @@ namespace NzbDrone.Core.MediaFiles.TrackImport.Specifications public RejectionType Type => RejectionType.Permanent; - public Decision IsSatisfiedBy(LocalTrack localTrack) + public Decision IsSatisfiedBy(LocalTrack item, DownloadClientItem downloadClientItem) { - if (_sameTracksSpecification.IsSatisfiedBy(localTrack.Tracks)) + if (_sameTracksSpecification.IsSatisfiedBy(item.Tracks)) { return Decision.Accept(); } diff --git a/src/NzbDrone.Core/MediaFiles/TrackImport/Specifications/UpgradeSpecification.cs b/src/NzbDrone.Core/MediaFiles/TrackImport/Specifications/UpgradeSpecification.cs index 19496e8e8..cc1ad01f5 100644 --- a/src/NzbDrone.Core/MediaFiles/TrackImport/Specifications/UpgradeSpecification.cs +++ b/src/NzbDrone.Core/MediaFiles/TrackImport/Specifications/UpgradeSpecification.cs @@ -2,6 +2,7 @@ using System.Linq; using NLog; using NzbDrone.Core.Configuration; using NzbDrone.Core.DecisionEngine; +using NzbDrone.Core.Download; using NzbDrone.Core.Parser.Model; using NzbDrone.Core.Qualities; @@ -18,12 +19,12 @@ namespace NzbDrone.Core.MediaFiles.TrackImport.Specifications _logger = logger; } - public Decision IsSatisfiedBy(LocalTrack localTrack) + public Decision IsSatisfiedBy(LocalTrack item, DownloadClientItem downloadClientItem) { var downloadPropersAndRepacks = _configService.DownloadPropersAndRepacks; - var qualityComparer = new QualityModelComparer(localTrack.Artist.QualityProfile); + var qualityComparer = new QualityModelComparer(item.Artist.QualityProfile); - foreach (var track in localTrack.Tracks.Where(e => e.TrackFileId > 0)) + foreach (var track in item.Tracks.Where(e => e.TrackFileId > 0)) { var trackFile = track.TrackFile.Value; @@ -33,18 +34,18 @@ namespace NzbDrone.Core.MediaFiles.TrackImport.Specifications continue; } - var qualityCompare = qualityComparer.Compare(localTrack.Quality.Quality, trackFile.Quality.Quality); + var qualityCompare = qualityComparer.Compare(item.Quality.Quality, trackFile.Quality.Quality); if (qualityCompare < 0) { - _logger.Debug("This file isn't a quality upgrade for all tracks. Skipping {0}", localTrack.Path); + _logger.Debug("This file isn't a quality upgrade for all tracks. Skipping {0}", item.Path); return Decision.Reject("Not an upgrade for existing track file(s)"); } if (qualityCompare == 0 && downloadPropersAndRepacks != ProperDownloadTypes.DoNotPrefer && - localTrack.Quality.Revision.CompareTo(trackFile.Quality.Revision) < 0) + item.Quality.Revision.CompareTo(trackFile.Quality.Revision) < 0) { - _logger.Debug("This file isn't a quality upgrade for all tracks. Skipping {0}", localTrack.Path); + _logger.Debug("This file isn't a quality upgrade for all tracks. Skipping {0}", item.Path); return Decision.Reject("Not an upgrade for existing track file(s)"); } }