diff --git a/src/Ombi.Helpers/StringHelper.cs b/src/Ombi.Helpers/StringHelper.cs index 6f0cf2b33..2de9b9704 100644 --- a/src/Ombi.Helpers/StringHelper.cs +++ b/src/Ombi.Helpers/StringHelper.cs @@ -75,58 +75,7 @@ namespace Ombi.Helpers } return -1; - } - - public static string BuildEpisodeList(IEnumerable<(int EpisodeNumber, DateTime? Aired)> orderedEpisodes) - { - var epSb = new StringBuilder(); - var previousEpisodes = new List<(int EpisodeNumber, DateTime? Aired)>(); - var previousEpisode = -1; - foreach (var ep in orderedEpisodes) - { - if (ep.EpisodeNumber - 1 == previousEpisode) - { - // This is the next one - previousEpisodes.Add(ep); - } - else - { - if (previousEpisodes.Count > 1) - { - // End it - (int EpisodeNumber, DateTime? Aired) first = previousEpisodes.First(); - (int EpisodeNumber, DateTime? Aired) last = previousEpisodes.Last(); - - epSb.Append($"{first.EpisodeNumber}-{last.EpisodeNumber}{(last.Aired.HasValue ? $" {last.Aired.Value:MM/yyyy}" : string.Empty)}, "); - } - else if (previousEpisodes.Count == 1) - { - (int EpisodeNumber, DateTime? Aired) = previousEpisodes.FirstOrDefault(); - epSb.Append($"{EpisodeNumber}{(Aired.HasValue ? $" {Aired.Value:MM/yyyy}" : string.Empty)}, "); - } - // New one - previousEpisodes.Clear(); - previousEpisodes.Add(ep); - } - previousEpisode = ep.EpisodeNumber; - } - - if (previousEpisodes.Count > 1) - { - // Got some left over - (int EpisodeNumber, DateTime? Aired) first = previousEpisodes.First(); - (int EpisodeNumber, DateTime? Aired) last = previousEpisodes.Last(); - epSb.Append($"{first.EpisodeNumber}-{last.EpisodeNumber}{(last.Aired.HasValue ? $" {last.Aired.Value:MM/yyyy}" : string.Empty)}"); - } - else if (previousEpisodes.Count == 1) - { - (int EpisodeNumber, DateTime? Aired) = previousEpisodes.FirstOrDefault(); - // string.Empty used instead of "" as extra space was being added at the end - epSb.Append($"{EpisodeNumber}{(Aired.HasValue ? $" {Aired.Value:d}" : string.Empty)}"); - } - - return epSb.ToString(); - } + } public static string BuildEpisodeList(IEnumerable orderedEpisodes) { diff --git a/src/Ombi.Schedule.Tests/NewsletterTests.cs b/src/Ombi.Schedule.Tests/NewsletterTests.cs index f0d3ff7bc..6df611f15 100644 --- a/src/Ombi.Schedule.Tests/NewsletterTests.cs +++ b/src/Ombi.Schedule.Tests/NewsletterTests.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using NUnit.Framework; using Ombi.Helpers; +using Ombi.Schedule.Jobs.Ombi; using static Ombi.Schedule.Jobs.Ombi.NewsletterJob; namespace Ombi.Schedule.Tests @@ -40,7 +41,7 @@ namespace Ombi.Schedule.Tests { ep.Add(i); } - var result = StringHelper.BuildEpisodeList(ep); + var result = BuildEpisodeList(ep); return result; } diff --git a/src/Ombi.Schedule/Jobs/Ombi/NewsletterJob.cs b/src/Ombi.Schedule/Jobs/Ombi/NewsletterJob.cs index 2f0aabe9d..edd0802d8 100644 --- a/src/Ombi.Schedule/Jobs/Ombi/NewsletterJob.cs +++ b/src/Ombi.Schedule/Jobs/Ombi/NewsletterJob.cs @@ -813,7 +813,7 @@ namespace Ombi.Schedule.Jobs.Ombi foreach (var epInformation in results.OrderBy(x => x.SeasonNumber)) { var orderedEpisodes = epInformation.Episodes.OrderBy(x => x.EpisodeNumber).ToList(); - var episodeString = StringHelper.BuildEpisodeList(orderedEpisodes.Select(x => (x.EpisodeNumber, x.Aired))); + var episodeString = BuildEpisodeList(orderedEpisodes.Select(x => (x.EpisodeNumber, x.Aired))); var seasonAirDate = epInformation.SeasonAirDate; finalsb.Append($"Season: {epInformation.SeasonNumber} - Episodes: {episodeString} {seasonAirDate}"); finalsb.Append("
"); @@ -852,6 +852,56 @@ namespace Ombi.Schedule.Jobs.Ombi } } + public static string BuildEpisodeList(IEnumerable<(int EpisodeNumber, DateTime? Aired)> orderedEpisodes) + { + var epSb = new StringBuilder(); + var previousEpisodes = new List<(int EpisodeNumber, DateTime? Aired)>(); + var previousEpisode = -1; + foreach (var ep in orderedEpisodes) + { + if (ep.EpisodeNumber - 1 == previousEpisode) + { + // This is the next one + previousEpisodes.Add(ep); + } + else + { + if (previousEpisodes.Count > 1) + { + // End it + (int EpisodeNumber, DateTime? Aired) first = previousEpisodes.First(); + (int EpisodeNumber, DateTime? Aired) last = previousEpisodes.Last(); + + epSb.Append($"{first.EpisodeNumber}-{last.EpisodeNumber}{(last.Aired.HasValue ? $" {last.Aired.Value:MM/yyyy}" : string.Empty)}, "); + } + else if (previousEpisodes.Count == 1) + { + (int EpisodeNumber, DateTime? Aired) = previousEpisodes.FirstOrDefault(); + epSb.Append($"{EpisodeNumber}{(Aired.HasValue ? $" {Aired.Value:MM/yyyy}" : string.Empty)}, "); + } + // New one + previousEpisodes.Clear(); + previousEpisodes.Add(ep); + } + previousEpisode = ep.EpisodeNumber; + } + + if (previousEpisodes.Count > 1) + { + // Got some left over + (int EpisodeNumber, DateTime? Aired) first = previousEpisodes.First(); + (int EpisodeNumber, DateTime? Aired) last = previousEpisodes.Last(); + epSb.Append($"{first.EpisodeNumber}-{last.EpisodeNumber}{(last.Aired.HasValue ? $" {last.Aired.Value:MM/yyyy}" : string.Empty)}"); + } + else if (previousEpisodes.Count == 1) + { + (int EpisodeNumber, DateTime? Aired) = previousEpisodes.FirstOrDefault(); + // string.Empty used instead of "" as extra space was being added at the end + epSb.Append($"{EpisodeNumber}{(Aired.HasValue ? $" {Aired.Value:d}" : string.Empty)}"); + } + + return epSb.ToString(); + } private async Task ProcessEmbyTv(HashSet embyContent, StringBuilder sb, string serverUrl)