From 91d91bc673ecba79f38cf10c7d49167919b69cdf Mon Sep 17 00:00:00 2001 From: Taloth Saldono Date: Wed, 10 Feb 2016 23:46:50 +0100 Subject: [PATCH] Fixed: Sample files of daily episodes should also be deleted after import. --- .../DownloadedEpisodesImportServiceFixture.cs | 6 +++--- .../EpisodeImport/ImportDecisionMakerFixture.cs | 2 +- .../MediaFiles/EpisodeImport/SampleServiceFixture.cs | 8 ++++---- .../MediaFiles/DownloadedEpisodesImportService.cs | 3 +-- .../MediaFiles/EpisodeImport/DetectSample.cs | 6 +++--- .../MediaFiles/EpisodeImport/ImportDecisionMaker.cs | 2 +- .../Specifications/NotSampleSpecification.cs | 2 +- src/NzbDrone.Core/Parser/Model/LocalEpisode.cs | 10 +++++++++- 8 files changed, 23 insertions(+), 16 deletions(-) diff --git a/src/NzbDrone.Core.Test/MediaFiles/DownloadedEpisodesImportServiceFixture.cs b/src/NzbDrone.Core.Test/MediaFiles/DownloadedEpisodesImportServiceFixture.cs index e8af69816..da7b3310e 100644 --- a/src/NzbDrone.Core.Test/MediaFiles/DownloadedEpisodesImportServiceFixture.cs +++ b/src/NzbDrone.Core.Test/MediaFiles/DownloadedEpisodesImportServiceFixture.cs @@ -167,7 +167,7 @@ namespace NzbDrone.Core.Test.MediaFiles It.IsAny(), It.IsAny(), It.IsAny(), - It.IsAny())) + It.IsAny())) .Returns(true); Subject.ProcessRootFolder(new DirectoryInfo(_droneFactory)); @@ -239,7 +239,7 @@ namespace NzbDrone.Core.Test.MediaFiles It.IsAny(), It.IsAny(), It.IsAny(), - It.IsAny())) + It.IsAny())) .Returns(true); Mocker.GetMock() @@ -350,7 +350,7 @@ namespace NzbDrone.Core.Test.MediaFiles It.IsAny(), It.IsAny(), It.IsAny(), - It.IsAny())) + It.IsAny())) .Returns(true); Mocker.GetMock() diff --git a/src/NzbDrone.Core.Test/MediaFiles/EpisodeImport/ImportDecisionMakerFixture.cs b/src/NzbDrone.Core.Test/MediaFiles/EpisodeImport/ImportDecisionMakerFixture.cs index c9f8bbc53..1ff8a2896 100644 --- a/src/NzbDrone.Core.Test/MediaFiles/EpisodeImport/ImportDecisionMakerFixture.cs +++ b/src/NzbDrone.Core.Test/MediaFiles/EpisodeImport/ImportDecisionMakerFixture.cs @@ -332,7 +332,7 @@ namespace NzbDrone.Core.Test.MediaFiles.EpisodeImport GivenVideoFiles(videoFiles.ToList()); Mocker.GetMock() - .Setup(s => s.IsSample(_series, It.IsAny(), It.Is(c => c.Contains("sample")), It.IsAny(), It.IsAny())) + .Setup(s => s.IsSample(_series, It.IsAny(), It.Is(c => c.Contains("sample")), It.IsAny(), It.IsAny())) .Returns(true); var folderInfo = Parser.Parser.ParseTitle("Series.Title.S01E01"); diff --git a/src/NzbDrone.Core.Test/MediaFiles/EpisodeImport/SampleServiceFixture.cs b/src/NzbDrone.Core.Test/MediaFiles/EpisodeImport/SampleServiceFixture.cs index 2828e1404..bbed1a753 100644 --- a/src/NzbDrone.Core.Test/MediaFiles/EpisodeImport/SampleServiceFixture.cs +++ b/src/NzbDrone.Core.Test/MediaFiles/EpisodeImport/SampleServiceFixture.cs @@ -91,7 +91,7 @@ namespace NzbDrone.Core.Test.MediaFiles.EpisodeImport _localEpisode.Quality, _localEpisode.Path, _localEpisode.Size, - _localEpisode.SeasonNumber); + _localEpisode.IsSpecial); Mocker.GetMock().Verify(v => v.GetRunTime(It.IsAny()), Times.Once()); } @@ -144,7 +144,7 @@ namespace NzbDrone.Core.Test.MediaFiles.EpisodeImport } [Test] - public void should_return_false_for_anime_speical() + public void should_return_false_for_anime_special() { _series.SeriesType = SeriesTypes.Anime; _localEpisode.Episodes[0].SeasonNumber = 0; @@ -158,7 +158,7 @@ namespace NzbDrone.Core.Test.MediaFiles.EpisodeImport _localEpisode.Quality, _localEpisode.Path, _localEpisode.Size, - _localEpisode.SeasonNumber).Should().BeTrue(); + _localEpisode.IsSpecial).Should().BeTrue(); } private void ShouldBeFalse() @@ -167,7 +167,7 @@ namespace NzbDrone.Core.Test.MediaFiles.EpisodeImport _localEpisode.Quality, _localEpisode.Path, _localEpisode.Size, - _localEpisode.SeasonNumber).Should().BeFalse(); + _localEpisode.IsSpecial).Should().BeFalse(); } } } diff --git a/src/NzbDrone.Core/MediaFiles/DownloadedEpisodesImportService.cs b/src/NzbDrone.Core/MediaFiles/DownloadedEpisodesImportService.cs index a5a56281f..0478b7888 100644 --- a/src/NzbDrone.Core/MediaFiles/DownloadedEpisodesImportService.cs +++ b/src/NzbDrone.Core/MediaFiles/DownloadedEpisodesImportService.cs @@ -117,8 +117,7 @@ namespace NzbDrone.Core.MediaFiles var size = _diskProvider.GetFileSize(videoFile); var quality = QualityParser.ParseQuality(videoFile); - if (!_detectSample.IsSample(series, quality, videoFile, size, - episodeParseResult.SeasonNumber)) + if (!_detectSample.IsSample(series, quality, videoFile, size, episodeParseResult.IsPossibleSpecialEpisode)) { _logger.Warn("Non-sample file detected: [{0}]", videoFile); return false; diff --git a/src/NzbDrone.Core/MediaFiles/EpisodeImport/DetectSample.cs b/src/NzbDrone.Core/MediaFiles/EpisodeImport/DetectSample.cs index e5b09c981..69ba9e94a 100644 --- a/src/NzbDrone.Core/MediaFiles/EpisodeImport/DetectSample.cs +++ b/src/NzbDrone.Core/MediaFiles/EpisodeImport/DetectSample.cs @@ -10,7 +10,7 @@ namespace NzbDrone.Core.MediaFiles.EpisodeImport { public interface IDetectSample { - bool IsSample(Series series, QualityModel quality, string path, long size, int seasonNumber); + bool IsSample(Series series, QualityModel quality, string path, long size, bool isSpecial); } public class DetectSample : IDetectSample @@ -34,9 +34,9 @@ namespace NzbDrone.Core.MediaFiles.EpisodeImport } } - public bool IsSample(Series series, QualityModel quality, string path, long size, int seasonNumber) + public bool IsSample(Series series, QualityModel quality, string path, long size, bool isSpecial) { - if (seasonNumber == 0) + if (isSpecial) { _logger.Debug("Special, skipping sample check"); return false; diff --git a/src/NzbDrone.Core/MediaFiles/EpisodeImport/ImportDecisionMaker.cs b/src/NzbDrone.Core/MediaFiles/EpisodeImport/ImportDecisionMaker.cs index 5b2fb45e7..6aeab444c 100644 --- a/src/NzbDrone.Core/MediaFiles/EpisodeImport/ImportDecisionMaker.cs +++ b/src/NzbDrone.Core/MediaFiles/EpisodeImport/ImportDecisionMaker.cs @@ -163,7 +163,7 @@ namespace NzbDrone.Core.MediaFiles.EpisodeImport { var size = _diskProvider.GetFileSize(file); var fileQuality = QualityParser.ParseQuality(file); - var sample = _detectSample.IsSample(series, GetQuality(folderInfo, fileQuality, series), file, size, folderInfo.SeasonNumber); + var sample = _detectSample.IsSample(series, GetQuality(folderInfo, fileQuality, series), file, size, folderInfo.IsPossibleSpecialEpisode); if (sample) { diff --git a/src/NzbDrone.Core/MediaFiles/EpisodeImport/Specifications/NotSampleSpecification.cs b/src/NzbDrone.Core/MediaFiles/EpisodeImport/Specifications/NotSampleSpecification.cs index 3b9e072ae..c7b61d802 100644 --- a/src/NzbDrone.Core/MediaFiles/EpisodeImport/Specifications/NotSampleSpecification.cs +++ b/src/NzbDrone.Core/MediaFiles/EpisodeImport/Specifications/NotSampleSpecification.cs @@ -28,7 +28,7 @@ namespace NzbDrone.Core.MediaFiles.EpisodeImport.Specifications localEpisode.Quality, localEpisode.Path, localEpisode.Size, - localEpisode.SeasonNumber); + localEpisode.IsSpecial); if (sample) { diff --git a/src/NzbDrone.Core/Parser/Model/LocalEpisode.cs b/src/NzbDrone.Core/Parser/Model/LocalEpisode.cs index 080981600..f099c036e 100644 --- a/src/NzbDrone.Core/Parser/Model/LocalEpisode.cs +++ b/src/NzbDrone.Core/Parser/Model/LocalEpisode.cs @@ -30,7 +30,15 @@ namespace NzbDrone.Core.Parser.Model return Episodes.Select(c => c.SeasonNumber).Distinct().Single(); } } - + + public bool IsSpecial + { + get + { + return SeasonNumber == 0; + } + } + public override string ToString() { return Path;