|
|
|
@ -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)) |
|
|
|
|