Browse Source

use artwork for schedule items with custom title when all media items are from same show (#216)

pull/217/head
Jason Dove 5 years ago committed by GitHub
parent
commit
84770ed250
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 57
      ErsatzTV.Core/Iptv/ChannelGuide.cs

57
ErsatzTV.Core/Iptv/ChannelGuide.cs

@ -72,6 +72,19 @@ namespace ErsatzTV.Core.Iptv
finishIndex++; finishIndex++;
} }
int customShowId = -1;
if (sorted[i].MediaItem is Episode ep)
{
customShowId = ep.Season.ShowId;
}
bool isSameCustomShow = hasCustomTitle;
for (int x = i; x <= finishIndex; x++)
{
isSameCustomShow = isSameCustomShow && sorted[x].MediaItem is Episode e &&
customShowId == e.Season.ShowId;
}
PlayoutItem finishItem = sorted[finishIndex]; PlayoutItem finishItem = sorted[finishIndex];
i = finishIndex; i = finishIndex;
@ -137,7 +150,7 @@ namespace ErsatzTV.Core.Iptv
xml.WriteStartElement("previously-shown"); xml.WriteStartElement("previously-shown");
xml.WriteEndElement(); // previously-shown xml.WriteEndElement(); // previously-shown
if (!hasCustomTitle && startItem.MediaItem is Episode episode) if (startItem.MediaItem is Episode episode && (!hasCustomTitle || isSameCustomShow))
{ {
Option<ShowMetadata> maybeMetadata = Option<ShowMetadata> maybeMetadata =
Optional(episode.Season?.Show?.ShowMetadata.HeadOrNone()).Flatten(); Optional(episode.Season?.Show?.ShowMetadata.HeadOrNone()).Flatten();
@ -166,30 +179,34 @@ namespace ErsatzTV.Core.Iptv
} }
} }
int s = Optional(episode.Season?.SeasonNumber).IfNone(0); if (!isSameCustomShow)
int e = episode.EpisodeNumber;
if (s > 0 && e > 0)
{ {
xml.WriteStartElement("episode-num"); int s = Optional(episode.Season?.SeasonNumber).IfNone(0);
xml.WriteAttributeString("system", "onscreen"); int e = episode.EpisodeNumber;
xml.WriteString($"S{s:00}E{e:00}"); if (s > 0 && e > 0)
xml.WriteEndElement(); // episode-num {
xml.WriteStartElement("episode-num");
xml.WriteStartElement("episode-num"); xml.WriteAttributeString("system", "onscreen");
xml.WriteAttributeString("system", "xmltv_ns"); xml.WriteString($"S{s:00}E{e:00}");
xml.WriteString($"{s - 1}.{e - 1}.0/1"); xml.WriteEndElement(); // episode-num
xml.WriteEndElement(); // episode-num
xml.WriteStartElement("episode-num");
xml.WriteAttributeString("system", "xmltv_ns");
xml.WriteString($"{s - 1}.{e - 1}.0/1");
xml.WriteEndElement(); // episode-num
}
} }
} }
// sb.AppendLine("<icon src=\"\"/>"); if (!isSameCustomShow)
if (!string.IsNullOrWhiteSpace(description))
{ {
xml.WriteStartElement("desc"); if (!string.IsNullOrWhiteSpace(description))
xml.WriteAttributeString("lang", "en"); {
xml.WriteString(description); xml.WriteStartElement("desc");
xml.WriteEndElement(); // desc xml.WriteAttributeString("lang", "en");
xml.WriteString(description);
xml.WriteEndElement(); // desc
}
} }
if (!string.IsNullOrWhiteSpace(contentRating)) if (!string.IsNullOrWhiteSpace(contentRating))

Loading…
Cancel
Save