diff --git a/src/NzbDrone.Core.Test/TvTests/RefreshEpisodeServiceFixture.cs b/src/NzbDrone.Core.Test/TvTests/RefreshEpisodeServiceFixture.cs index bb89e1a8c..cdf3492bd 100644 Binary files a/src/NzbDrone.Core.Test/TvTests/RefreshEpisodeServiceFixture.cs and b/src/NzbDrone.Core.Test/TvTests/RefreshEpisodeServiceFixture.cs differ diff --git a/src/NzbDrone.Core/Tv/RefreshEpisodeService.cs b/src/NzbDrone.Core/Tv/RefreshEpisodeService.cs index f8436dc24..e60658104 100644 --- a/src/NzbDrone.Core/Tv/RefreshEpisodeService.cs +++ b/src/NzbDrone.Core/Tv/RefreshEpisodeService.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Windows.Forms.VisualStyles; using NLog; using NzbDrone.Common; using NzbDrone.Core.Messaging.Events; @@ -79,6 +80,7 @@ namespace NzbDrone.Core.Tv allEpisodes.AddRange(updateList); AdjustMultiEpisodeAirTime(series, allEpisodes); + SetAbsoluteEpisodeNumber(allEpisodes); _episodeService.DeleteMany(existingEpisodes); _episodeService.UpdateMany(updateList); @@ -132,12 +134,24 @@ namespace NzbDrone.Core.Tv foreach (var group in groups) { var episodeCount = 0; - foreach (var episode in @group.OrderBy(e => e.SeasonNumber).ThenBy(e => e.EpisodeNumber)) + foreach (var episode in group.OrderBy(e => e.SeasonNumber).ThenBy(e => e.EpisodeNumber)) { episode.AirDateUtc = episode.AirDateUtc.Value.AddMinutes(series.Runtime * episodeCount); episodeCount++; } } } + + private static void SetAbsoluteEpisodeNumber(IEnumerable allEpisodes) + { + var episodes = allEpisodes.Where(e => e.SeasonNumber > 0 && e.EpisodeNumber > 0) + .OrderBy(e => e.SeasonNumber).ThenBy(e => e.EpisodeNumber) + .ToList(); + + for (int i = 0; i < episodes.Count(); i++) + { + episodes[i].AbsoluteEpisodeNumber = i + 1; + } + } } } \ No newline at end of file