From f1f09bd4cb3f0144421177a248c4bd3c5f1565b0 Mon Sep 17 00:00:00 2001 From: Jason Dove Date: Wed, 8 Sep 2021 22:12:47 -0500 Subject: [PATCH] fix sorting episodes without metadata (#353) --- CHANGELOG.md | 2 ++ ErsatzTV.Core/Scheduling/ChronologicalMediaComparer.cs | 8 ++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9dcdd2451..c9b40900b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Properly order elements - Omit channels with no programmes - Properly identify channels using the format number.etv like `15.etv` +- Fix sorting episodes without episode metadata + - This bug prevented playouts from building and was most often seen when grouping multi-part episodes, as shows are sorted chronologically before checking for multi-part episodes ## [0.0.55-alpha] - 2021-09-03 ### Fixed diff --git a/ErsatzTV.Core/Scheduling/ChronologicalMediaComparer.cs b/ErsatzTV.Core/Scheduling/ChronologicalMediaComparer.cs index 22331d2e7..3c6add122 100644 --- a/ErsatzTV.Core/Scheduling/ChronologicalMediaComparer.cs +++ b/ErsatzTV.Core/Scheduling/ChronologicalMediaComparer.cs @@ -66,13 +66,17 @@ namespace ErsatzTV.Core.Scheduling int episode1 = x switch { - Episode e => e.EpisodeMetadata.Max(em => em.EpisodeNumber), + Episode e => e.EpisodeMetadata.HeadOrNone().Match( + em => em.EpisodeNumber, + () => int.MaxValue), _ => int.MaxValue }; int episode2 = y switch { - Episode e => e.EpisodeMetadata.Max(em => em.EpisodeNumber), + Episode e => e.EpisodeMetadata.HeadOrNone().Match( + em => em.EpisodeNumber, + () => int.MaxValue), _ => int.MaxValue };