Browse Source

fix xmltv crash with missing episode metadata

pull/1213/head
Jason Dove 5 years ago
parent
commit
e8abbbf52c
  1. 14
      ErsatzTV.Application/Television/Mapper.cs
  2. 8
      ErsatzTV.Core/Iptv/ChannelGuide.cs

14
ErsatzTV.Application/Television/Mapper.cs

@ -9,17 +9,17 @@ namespace ErsatzTV.Application.Television
internal static TelevisionShowViewModel ProjectToViewModel(Show show) => internal static TelevisionShowViewModel ProjectToViewModel(Show show) =>
new( new(
show.Id, show.Id,
show.ShowMetadata.HeadOrNone().Map(m => m.Title).IfNone(string.Empty), show.ShowMetadata.HeadOrNone().Map(m => m.Title ?? string.Empty).IfNone(string.Empty),
show.ShowMetadata.HeadOrNone().Map(m => m.Year?.ToString()).IfNone(string.Empty), show.ShowMetadata.HeadOrNone().Map(m => m.Year?.ToString() ?? string.Empty).IfNone(string.Empty),
show.ShowMetadata.HeadOrNone().Map(m => m.Plot).IfNone(string.Empty), show.ShowMetadata.HeadOrNone().Map(m => m.Plot ?? string.Empty).IfNone(string.Empty),
show.ShowMetadata.HeadOrNone().Map(GetPoster).IfNone(string.Empty)); show.ShowMetadata.HeadOrNone().Map(GetPoster).IfNone(string.Empty));
internal static TelevisionSeasonViewModel ProjectToViewModel(Season season) => internal static TelevisionSeasonViewModel ProjectToViewModel(Season season) =>
new( new(
season.Id, season.Id,
season.ShowId, season.ShowId,
season.Show.ShowMetadata.HeadOrNone().Map(m => m.Title).IfNone(string.Empty), season.Show.ShowMetadata.HeadOrNone().Map(m => m.Title ?? string.Empty).IfNone(string.Empty),
season.Show.ShowMetadata.HeadOrNone().Map(m => m.Year?.ToString()).IfNone(string.Empty), season.Show.ShowMetadata.HeadOrNone().Map(m => m.Year?.ToString() ?? string.Empty).IfNone(string.Empty),
season.SeasonNumber == 0 ? "Specials" : $"Season {season.SeasonNumber}", season.SeasonNumber == 0 ? "Specials" : $"Season {season.SeasonNumber}",
season.SeasonMetadata.HeadOrNone().Map(GetPoster).IfNone(string.Empty)); season.SeasonMetadata.HeadOrNone().Map(GetPoster).IfNone(string.Empty));
@ -28,8 +28,8 @@ namespace ErsatzTV.Application.Television
episode.Season.ShowId, episode.Season.ShowId,
episode.SeasonId, episode.SeasonId,
episode.EpisodeNumber, episode.EpisodeNumber,
episode.EpisodeMetadata.HeadOrNone().Map(m => m.Title).IfNone(string.Empty), episode.EpisodeMetadata.HeadOrNone().Map(m => m.Title ?? string.Empty).IfNone(string.Empty),
episode.EpisodeMetadata.HeadOrNone().Map(m => m.Plot).IfNone(string.Empty), episode.EpisodeMetadata.HeadOrNone().Map(m => m.Plot ?? string.Empty).IfNone(string.Empty),
episode.EpisodeMetadata.HeadOrNone().Map(GetThumbnail).IfNone(string.Empty)); episode.EpisodeMetadata.HeadOrNone().Map(GetThumbnail).IfNone(string.Empty));
private static string GetPoster(Metadata metadata) => private static string GetPoster(Metadata metadata) =>

8
ErsatzTV.Core/Iptv/ChannelGuide.cs

@ -62,15 +62,15 @@ namespace ErsatzTV.Core.Iptv
string title = playoutItem.MediaItem switch string title = playoutItem.MediaItem switch
{ {
Movie m => m.MovieMetadata.HeadOrNone().Map(mm => mm.Title).IfNone("[unknown movie]"), Movie m => m.MovieMetadata.HeadOrNone().Map(mm => mm.Title ?? string.Empty).IfNone("[unknown movie]"),
Episode e => e.EpisodeMetadata.HeadOrNone().Map(em => em.Title).IfNone("[unknown episode]"), Episode e => e.EpisodeMetadata.HeadOrNone().Map(em => em.Title ?? string.Empty).IfNone("[unknown episode]"),
_ => "[unknown]" _ => "[unknown]"
}; };
string description = playoutItem.MediaItem switch string description = playoutItem.MediaItem switch
{ {
Movie m => m.MovieMetadata.HeadOrNone().Map(mm => mm.Plot).IfNone(string.Empty), Movie m => m.MovieMetadata.HeadOrNone().Map(mm => mm.Plot ?? string.Empty).IfNone(string.Empty),
Episode e => e.EpisodeMetadata.HeadOrNone().Map(em => em.Plot).IfNone(string.Empty), Episode e => e.EpisodeMetadata.HeadOrNone().Map(em => em.Plot ?? string.Empty).IfNone(string.Empty),
_ => string.Empty _ => string.Empty
}; };

Loading…
Cancel
Save