Browse Source

add movie poster to xmltv

pull/71/head
Jason Dove 5 years ago
parent
commit
c99086b666
  1. 32
      ErsatzTV.Core/Iptv/ChannelGuide.cs
  2. 1
      ErsatzTV.Infrastructure/Data/Repositories/ChannelRepository.cs

32
ErsatzTV.Core/Iptv/ChannelGuide.cs

@ -4,6 +4,8 @@ using System.Linq;
using System.Text; using System.Text;
using System.Xml; using System.Xml;
using ErsatzTV.Core.Domain; using ErsatzTV.Core.Domain;
using LanguageExt;
using LanguageExt.UnsafeValueAccess;
using static LanguageExt.Prelude; using static LanguageExt.Prelude;
namespace ErsatzTV.Core.Iptv namespace ErsatzTV.Core.Iptv
@ -104,10 +106,32 @@ namespace ErsatzTV.Core.Iptv
xml.WriteString("Movie"); xml.WriteString("Movie");
xml.WriteEndElement(); // category xml.WriteEndElement(); // category
int year = movie.MovieMetadata.HeadOrNone().Match(mm => mm.Year ?? 0, () => 0); Option<MovieMetadata> maybeMetadata = movie.MovieMetadata.HeadOrNone();
xml.WriteStartElement("date"); if (maybeMetadata.IsSome)
xml.WriteString(year.ToString()); {
xml.WriteEndElement(); // date MovieMetadata metadata = maybeMetadata.ValueUnsafe();
if (metadata.Year.HasValue)
{
xml.WriteStartElement("date");
xml.WriteString(metadata.Year.Value.ToString());
xml.WriteEndElement(); // date
}
string poster = Optional(metadata.Artwork).Flatten()
.Filter(a => a.ArtworkKind == ArtworkKind.Poster)
.HeadOrNone()
.Match(
artwork => $"{_scheme}://{_host}/artwork/posters/{artwork.Path}",
() => string.Empty);
if (!string.IsNullOrWhiteSpace(poster))
{
xml.WriteStartElement("icon");
xml.WriteAttributeString("src", poster);
xml.WriteEndElement(); // icon
}
}
} }
xml.WriteStartElement("title"); xml.WriteStartElement("title");

1
ErsatzTV.Infrastructure/Data/Repositories/ChannelRepository.cs

@ -59,6 +59,7 @@ namespace ErsatzTV.Infrastructure.Data.Repositories
.ThenInclude(p => p.Items) .ThenInclude(p => p.Items)
.ThenInclude(i => i.MediaItem) .ThenInclude(i => i.MediaItem)
.ThenInclude(i => (i as Movie).MovieMetadata) .ThenInclude(i => (i as Movie).MovieMetadata)
.ThenInclude(mm => mm.Artwork)
.ToListAsync(); .ToListAsync();
public async Task Update(Channel channel) public async Task Update(Channel channel)

Loading…
Cancel
Save