Move Build episode list out from string builder

This commit is contained in:
adamworley 2020-10-18 09:22:12 +01:00
commit 24379405cf
3 changed files with 54 additions and 54 deletions

View file

@ -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<int> orderedEpisodes)
{

View file

@ -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;
}

View file

@ -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("<br />");
@ -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<EmbyEpisode> embyContent, StringBuilder sb, string serverUrl)