From f44fd5fcbd99ea3453ce201565bcf28950d05ce4 Mon Sep 17 00:00:00 2001 From: Keivan Beigi Date: Tue, 14 Oct 2014 16:33:49 -0700 Subject: [PATCH] Fixed: filter duplicated episodes returned from Trakt http://support.trakt.tv/forums/188762-general/suggestions/4430690-anger-management-duplicate-episode --- src/NzbDrone.Common/EnvironmentInfo/OsInfo.cs | 2 ++ .../MetadataSourceTests/TraktProxyFixture.cs | 4 ++-- .../MetadataSource/TraktProxy.cs | 23 +++++++++---------- 3 files changed, 15 insertions(+), 14 deletions(-) diff --git a/src/NzbDrone.Common/EnvironmentInfo/OsInfo.cs b/src/NzbDrone.Common/EnvironmentInfo/OsInfo.cs index ad85d0c14..314e0e044 100644 --- a/src/NzbDrone.Common/EnvironmentInfo/OsInfo.cs +++ b/src/NzbDrone.Common/EnvironmentInfo/OsInfo.cs @@ -1,4 +1,5 @@ using System; +using System.Diagnostics; using System.Globalization; using System.Runtime.InteropServices; @@ -50,6 +51,7 @@ namespace NzbDrone.Common.EnvironmentInfo [DllImport("libc")] static extern int uname(IntPtr buf); + [DebuggerStepThrough] static bool IsRunningOnMac() { var buf = IntPtr.Zero; diff --git a/src/NzbDrone.Core.Test/MetadataSourceTests/TraktProxyFixture.cs b/src/NzbDrone.Core.Test/MetadataSourceTests/TraktProxyFixture.cs index b50d1ee9a..d1bec7016 100644 --- a/src/NzbDrone.Core.Test/MetadataSourceTests/TraktProxyFixture.cs +++ b/src/NzbDrone.Core.Test/MetadataSourceTests/TraktProxyFixture.cs @@ -103,8 +103,8 @@ namespace NzbDrone.Core.Test.MetadataSourceTests { episodes.Should().NotBeEmpty(); - episodes.GroupBy(e => e.SeasonNumber.ToString("000") + e.EpisodeNumber.ToString("000")) - .Max(e => e.Count()).Should().Be(1); + var episodeGroup= episodes.GroupBy(e => e.SeasonNumber.ToString("000") + e.EpisodeNumber.ToString("000")); + episodeGroup.Should().OnlyContain(c=>c.Count() == 1); episodes.Should().Contain(c => c.SeasonNumber > 0); episodes.Should().Contain(c => !string.IsNullOrWhiteSpace(c.Overview)); diff --git a/src/NzbDrone.Core/MetadataSource/TraktProxy.cs b/src/NzbDrone.Core/MetadataSource/TraktProxy.cs index 381837f0b..9ffc02b6a 100644 --- a/src/NzbDrone.Core/MetadataSource/TraktProxy.cs +++ b/src/NzbDrone.Core/MetadataSource/TraktProxy.cs @@ -110,22 +110,21 @@ namespace NzbDrone.Core.MetadataSource var response = _httpClient.Get(request).Resource; - /* + var episodes = response.seasons.SelectMany(c => c.episodes).Select(MapEpisode); - var client = BuildClient("show", "summary"); - var restRequest = new RestRequest(tvdbSeriesId + "/extended"); - var response = client.ExecuteAndValidate(restRequest);*/ - - var episodes = response.seasons.SelectMany(c => c.episodes).Select(MapEpisode).ToList(); + episodes = RemoveDuplicates(episodes); + var series = MapSeries(response); - return new Tuple>(series, episodes); + return new Tuple>(series, episodes.ToList()); + } + + private static IEnumerable RemoveDuplicates(IEnumerable episodes) + { + //http://support.trakt.tv/forums/188762-general/suggestions/4430690-anger-management-duplicate-episode + var episodeGroup = episodes.GroupBy(e => e.SeasonNumber.ToString("0000") + e.EpisodeNumber.ToString("0000")); + return episodeGroup.Select(g => g.First()); } - /* - private static IRestClient BuildClient(string resource, string method) - { - return RestClientFactory.BuildClient(string.Format("http://api.trakt.tv/{0}/{1}.json/bc3c2c460f22cbb01c264022b540e191", resource, method)); - }*/ private static Series MapSeries(Show show) {