diff --git a/src/NzbDrone.Core.Test/TvTests/RefreshEpisodeServiceFixture.cs b/src/NzbDrone.Core.Test/TvTests/RefreshEpisodeServiceFixture.cs index 5725b6664..0284b2431 100644 --- a/src/NzbDrone.Core.Test/TvTests/RefreshEpisodeServiceFixture.cs +++ b/src/NzbDrone.Core.Test/TvTests/RefreshEpisodeServiceFixture.cs @@ -282,5 +282,29 @@ namespace NzbDrone.Core.Test.TvTests _updatedEpisodes.First().EpisodeNumber.Should().Be(episodes[1].EpisodeNumber); _updatedEpisodes.First().AbsoluteEpisodeNumber.Should().Be(episodes[1].AbsoluteEpisodeNumber); } + + [Test] + public void should_ignore_episodes_with_absolute_episode_of_zero_in_distinct_by_absolute() + { + var episodes = Builder.CreateListOfSize(10) + .Build() + .ToList(); + + episodes[0].AbsoluteEpisodeNumber = 0; + episodes[1].AbsoluteEpisodeNumber = 0; + episodes[2].AbsoluteEpisodeNumber = 0; + episodes[3].AbsoluteEpisodeNumber = 0; + episodes[4].AbsoluteEpisodeNumber = 0; + + GivenAnimeEpisodes(episodes); + + Mocker.GetMock().Setup(c => c.GetEpisodeBySeries(It.IsAny())) + .Returns(new List()); + + Subject.RefreshEpisodeInfo(GetAnimeSeries(), episodes); + + _insertedEpisodes.Should().HaveCount(episodes.Count); + + } } } \ No newline at end of file diff --git a/src/NzbDrone.Core/Tv/RefreshEpisodeService.cs b/src/NzbDrone.Core/Tv/RefreshEpisodeService.cs index dbb6036ce..8db1e864b 100644 --- a/src/NzbDrone.Core/Tv/RefreshEpisodeService.cs +++ b/src/NzbDrone.Core/Tv/RefreshEpisodeService.cs @@ -170,7 +170,11 @@ namespace NzbDrone.Core.Tv episode.AbsoluteEpisodeNumber = tvdbEpisode.AbsoluteEpisodeNumber; } - return traktEpisodes.DistinctBy(e => e.AbsoluteEpisodeNumber).ToList(); + //Return all episodes with abs 0, but distinct by abs for ones greater than 0 + return traktEpisodes.Where(e => e.AbsoluteEpisodeNumber > 0) + .DistinctBy(e => e.AbsoluteEpisodeNumber) + .Concat(traktEpisodes.Where(e => e.AbsoluteEpisodeNumber == 0)) + .ToList(); } private Episode GetEpisodeToUpdate(Series series, Episode episode, List existingEpisodes)