From 89cfb5c9b1dec27a9c29b93da54ec67a184273ae Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Wed, 26 Dec 2012 16:16:15 -0800 Subject: [PATCH] TVRageMapping updates Fixed: Issue matching TVDB series to TVRage series in some situations --- .../FindMatchingTvRageSeriesFixture.cs | 1 + .../ProcessResultsFixture.cs | 18 ++++++++++++++++-- .../Datastore/Migrations/Migration20121226.cs | 16 ++++++++++++++++ NzbDrone.Core/NzbDrone.Core.csproj | 1 + NzbDrone.Core/Providers/SeriesProvider.cs | 5 +++++ .../Providers/TvRageMappingProvider.cs | 5 ++++- NzbDrone.Core/Repository/Series.cs | 2 ++ 7 files changed, 45 insertions(+), 3 deletions(-) create mode 100644 NzbDrone.Core/Datastore/Migrations/Migration20121226.cs diff --git a/NzbDrone.Core.Test/ProviderTests/TvRageMappingProviderTests/FindMatchingTvRageSeriesFixture.cs b/NzbDrone.Core.Test/ProviderTests/TvRageMappingProviderTests/FindMatchingTvRageSeriesFixture.cs index b6f4eafa1..680a4f33e 100644 --- a/NzbDrone.Core.Test/ProviderTests/TvRageMappingProviderTests/FindMatchingTvRageSeriesFixture.cs +++ b/NzbDrone.Core.Test/ProviderTests/TvRageMappingProviderTests/FindMatchingTvRageSeriesFixture.cs @@ -31,6 +31,7 @@ namespace NzbDrone.Core.Test.ProviderTests.TvRageMappingProviderTests .With(s => s.TvRageId = 0) .With(s => s.TvRageTitle = null) .With(s => s.UtcOffset = 0) + .With(s => s.FirstAired = DateTime.Today.AddDays(-180)) .Build(); _episode = Builder diff --git a/NzbDrone.Core.Test/ProviderTests/TvRageMappingProviderTests/ProcessResultsFixture.cs b/NzbDrone.Core.Test/ProviderTests/TvRageMappingProviderTests/ProcessResultsFixture.cs index afd8e0779..1684de5fe 100644 --- a/NzbDrone.Core.Test/ProviderTests/TvRageMappingProviderTests/ProcessResultsFixture.cs +++ b/NzbDrone.Core.Test/ProviderTests/TvRageMappingProviderTests/ProcessResultsFixture.cs @@ -25,7 +25,10 @@ namespace NzbDrone.Core.Test.ProviderTests.TvRageMappingProviderTests .CreateListOfSize(5) .Build(); - _series = Builder.CreateNew().Build(); + _series = Builder + .CreateNew() + .With(s => s.FirstAired = DateTime.Today.AddDays(-180)) + .Build(); _episode = Builder .CreateNew() @@ -63,7 +66,18 @@ namespace NzbDrone.Core.Test.ProviderTests.TvRageMappingProviderTests } [Test] - public void should_return_result_if_firstAired_matches() + public void should_return_result_if_series_firstAired_matches() + { + _series.FirstAired = _searchResults.Last().Started; + + Mocker.Resolve() + .ProcessResults(_searchResults, _series, "nomatchhere", _episode) + .Should() + .Be(_searchResults.Last()); + } + + [Test] + public void should_return_result_if_episode_firstAired_matches() { _episode.AirDate = _searchResults.Last().Started; diff --git a/NzbDrone.Core/Datastore/Migrations/Migration20121226.cs b/NzbDrone.Core/Datastore/Migrations/Migration20121226.cs new file mode 100644 index 000000000..fdbce1992 --- /dev/null +++ b/NzbDrone.Core/Datastore/Migrations/Migration20121226.cs @@ -0,0 +1,16 @@ +using System; +using System.Data; +using Migrator.Framework; +using NzbDrone.Common; + +namespace NzbDrone.Core.Datastore.Migrations +{ + [Migration(20121226)] + public class Migration20121226 : NzbDroneMigration + { + protected override void MainDbUpgrade() + { + Database.AddColumn("Series", new Column("FirstAired", DbType.DateTime, ColumnProperty.Null)); + } + } +} \ No newline at end of file diff --git a/NzbDrone.Core/NzbDrone.Core.csproj b/NzbDrone.Core/NzbDrone.Core.csproj index 69e500e16..808b9187a 100644 --- a/NzbDrone.Core/NzbDrone.Core.csproj +++ b/NzbDrone.Core/NzbDrone.Core.csproj @@ -228,6 +228,7 @@ + diff --git a/NzbDrone.Core/Providers/SeriesProvider.cs b/NzbDrone.Core/Providers/SeriesProvider.cs index 70d167ae9..9a0d94f5f 100644 --- a/NzbDrone.Core/Providers/SeriesProvider.cs +++ b/NzbDrone.Core/Providers/SeriesProvider.cs @@ -110,6 +110,11 @@ namespace NzbDrone.Core.Providers series.BannerUrl = tvDbSeries.BannerPath; series.Network = tvDbSeries.Network; + if (tvDbSeries.FirstAired.Year > 1900) + series.FirstAired = tvDbSeries.FirstAired.Date; + else + series.FirstAired = null; + try { if(series.TvRageId == 0) diff --git a/NzbDrone.Core/Providers/TvRageMappingProvider.cs b/NzbDrone.Core/Providers/TvRageMappingProvider.cs index 427cf1fdd..9c82e1cd5 100644 --- a/NzbDrone.Core/Providers/TvRageMappingProvider.cs +++ b/NzbDrone.Core/Providers/TvRageMappingProvider.cs @@ -59,7 +59,10 @@ namespace NzbDrone.Core.Providers if (!String.IsNullOrWhiteSpace(sceneCleanName) && Parser.NormalizeTitle(result.Name).Equals(sceneCleanName)) return result; - if (firstEpisode.AirDate.HasValue && result.Started == firstEpisode.AirDate.Value) + if (series.FirstAired.HasValue && result.Started == series.FirstAired.Value) + return result; + + if (firstEpisode != null && firstEpisode.AirDate.HasValue && result.Started == firstEpisode.AirDate.Value) return result; } diff --git a/NzbDrone.Core/Repository/Series.cs b/NzbDrone.Core/Repository/Series.cs index 92bcf07e9..1b10976e1 100644 --- a/NzbDrone.Core/Repository/Series.cs +++ b/NzbDrone.Core/Repository/Series.cs @@ -58,6 +58,8 @@ namespace NzbDrone.Core.Repository public int UtcOffset { get; set; } + public DateTime? FirstAired { get; set; } + /// /// Gets or sets a value indicating whether this is hidden. ///