From d99415bc31077e257875e1e855537c4d129d8aaa Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Thu, 18 Oct 2012 08:33:18 -0700 Subject: [PATCH] Revert to standard numbering when scene is absent --- .../SearchProviderTests/SearchFixture.cs | 24 ----------------- NzbDrone.Core/Providers/EpisodeProvider.cs | 4 +-- NzbDrone.Core/Providers/SearchProvider.cs | 26 ++++++++++--------- 3 files changed, 16 insertions(+), 38 deletions(-) diff --git a/NzbDrone.Core.Test/ProviderTests/SearchProviderTests/SearchFixture.cs b/NzbDrone.Core.Test/ProviderTests/SearchProviderTests/SearchFixture.cs index 8f34f2c9a..2f23e3ed8 100644 --- a/NzbDrone.Core.Test/ProviderTests/SearchProviderTests/SearchFixture.cs +++ b/NzbDrone.Core.Test/ProviderTests/SearchProviderTests/SearchFixture.cs @@ -206,29 +206,5 @@ namespace NzbDrone.Core.Test.ProviderTests.SearchProviderTests result.Should().BeFalse(); ExceptionVerification.ExpectedWarns(1); } - - [Test] - public void EpisodeSearch_should_skip_if_sceneNumbering_is_invalid_and_should_use_sceneNumbering() - { - //Setup - _series.UseSceneNumbering = true; - var episode = _episodes.First(); - episode.SceneSeasonNumber = 0; - episode.SceneEpisodeNumber = 0; - episode.Series = _series; - - Mocker.GetMock().Setup(s => s.IsSatisfiedBy(It.IsAny())) - .Returns(true); - - Mocker.GetMock().Setup(s => s.GetEpisode(episode.EpisodeId)) - .Returns(episode); - - //Act - var result = Mocker.Resolve().EpisodeSearch(MockNotification, episode.EpisodeId); - - //Assert - result.Should().BeFalse(); - ExceptionVerification.ExpectedWarns(1); - } } } diff --git a/NzbDrone.Core/Providers/EpisodeProvider.cs b/NzbDrone.Core/Providers/EpisodeProvider.cs index c30000176..1e44607aa 100644 --- a/NzbDrone.Core/Providers/EpisodeProvider.cs +++ b/NzbDrone.Core/Providers/EpisodeProvider.cs @@ -188,12 +188,12 @@ namespace NzbDrone.Core.Providers foreach (var episodeNumber in parseResult.EpisodeNumbers) { - Episode episodeInfo; + Episode episodeInfo = null; if (parseResult.SceneSource && parseResult.Series.UseSceneNumbering) episodeInfo = GetEpisodeBySceneNumbering(parseResult.Series.SeriesId, parseResult.SeasonNumber, episodeNumber); - else + if (episodeInfo == null) { episodeInfo = GetEpisode(parseResult.Series.SeriesId, parseResult.SeasonNumber, episodeNumber); if (episodeInfo == null && parseResult.AirDate != null) diff --git a/NzbDrone.Core/Providers/SearchProvider.cs b/NzbDrone.Core/Providers/SearchProvider.cs index 498930aa9..bf4bbea51 100644 --- a/NzbDrone.Core/Providers/SearchProvider.cs +++ b/NzbDrone.Core/Providers/SearchProvider.cs @@ -161,14 +161,6 @@ namespace NzbDrone.Core.Providers return false; } - if (episode.Series.UseSceneNumbering && episode.SceneSeasonNumber <= 0 && episode.SceneEpisodeNumber <= 0) - { - _logger.Warn("Series should use Scene Numbering, but it is not available: {0}", episode); - - notification.CurrentMessage = String.Format("Search Failed, invalid scene episode data found: {0}", episode); - return false; - } - var searchResult = new SearchHistory { SearchTime = DateTime.Now, @@ -192,13 +184,23 @@ namespace NzbDrone.Core.Providers else if (episode.Series.UseSceneNumbering) { searchResult.EpisodeId = episodeId; + + var seasonNumber = episode.SceneSeasonNumber; + var episodeNumber = episode.SceneEpisodeNumber; + + if (seasonNumber == 0 || episodeNumber == 0) + { + seasonNumber = episode.SeasonNumber; + episodeNumber = episode.EpisodeNumber; + } + searchResult.SearchHistoryItems = ProcessSearchResults( notification, reports, searchResult, episode.Series, - episode.SceneSeasonNumber, - episode.SceneEpisodeNumber + seasonNumber, + episodeNumber ); _searchHistoryProvider.Add(searchResult); @@ -254,8 +256,8 @@ namespace NzbDrone.Core.Providers //Treat as single episode else if (episodes.Count == 1) { - //Use SceneNumbering - if (series.UseSceneNumbering) + //Use SceneNumbering - Only if SceneSN and SceneEN are greater than zero + if (series.UseSceneNumbering && episodes.First().SceneSeasonNumber > 0 && episodes.First().SceneEpisodeNumber > 0) reports.AddRange(indexer.FetchEpisode(title, episodes.First().SceneSeasonNumber, episodes.First().SceneEpisodeNumber)); //Standard