Browse Source

prioritize poster artwork for xmltv (#1221)

pull/1222/head
Jason Dove 3 years ago committed by GitHub
parent
commit
aa87abc53d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      CHANGELOG.md
  2. 57
      ErsatzTV.Core/Iptv/ChannelGuide.cs

4
CHANGELOG.md

@ -10,6 +10,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). @@ -10,6 +10,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
### Fixed
- Fix updating (re-adding) Trakt lists to properly use new metadata ids that were not present when originally added
### Changed
- Use Poster artwork for XMLTV if available
- If Poster artwork is unavailable, use Thumbnail
## [0.7.6-beta] - 2023-03-24
### Added
- Add `Troubleshooting` page with aggregated settings/hardware accel info for easy reference

57
ErsatzTV.Core/Iptv/ChannelGuide.cs

@ -257,15 +257,11 @@ public class ChannelGuide @@ -257,15 +257,11 @@ public class ChannelGuide
}
}
string thumbnail = Optional(metadata.Artwork).Flatten()
.Filter(a => a.ArtworkKind == ArtworkKind.Thumbnail)
.HeadOrNone()
.Match(a => GetArtworkUrl(a, ArtworkKind.Thumbnail), () => string.Empty);
if (!string.IsNullOrWhiteSpace(thumbnail))
string artworkPath = GetPrioritizedArtworkPath(metadata);
if (!string.IsNullOrWhiteSpace(artworkPath))
{
xml.WriteStartElement("icon");
xml.WriteAttributeString("src", thumbnail);
xml.WriteAttributeString("src", artworkPath);
xml.WriteEndElement(); // icon
}
}
@ -280,15 +276,11 @@ public class ChannelGuide @@ -280,15 +276,11 @@ public class ChannelGuide
foreach (SongMetadata metadata in song.SongMetadata.HeadOrNone())
{
string thumbnail = Optional(metadata.Artwork).Flatten()
.Filter(a => a.ArtworkKind == ArtworkKind.Thumbnail)
.HeadOrNone()
.Match(a => GetArtworkUrl(a, ArtworkKind.Thumbnail), () => string.Empty);
if (!string.IsNullOrWhiteSpace(thumbnail))
string artworkPath = GetPrioritizedArtworkPath(metadata);
if (!string.IsNullOrWhiteSpace(artworkPath))
{
xml.WriteStartElement("icon");
xml.WriteAttributeString("src", thumbnail);
xml.WriteAttributeString("src", artworkPath);
xml.WriteEndElement(); // icon
}
}
@ -313,24 +305,11 @@ public class ChannelGuide @@ -313,24 +305,11 @@ public class ChannelGuide
xml.WriteEndElement(); // category
}
string artwork = Optional(metadata.Artwork).Flatten()
.Filter(a => a.ArtworkKind == ArtworkKind.Thumbnail)
.HeadOrNone()
.Match(a => GetArtworkUrl(a, ArtworkKind.Thumbnail), () => string.Empty);
// fall back to poster
if (string.IsNullOrWhiteSpace(artwork))
{
artwork = Optional(metadata.Artwork).Flatten()
.Filter(a => a.ArtworkKind == ArtworkKind.Poster)
.HeadOrNone()
.Match(a => GetArtworkUrl(a, ArtworkKind.Poster), () => string.Empty);
}
if (!string.IsNullOrWhiteSpace(artwork))
string artworkPath = GetPrioritizedArtworkPath(metadata);
if (!string.IsNullOrWhiteSpace(artworkPath))
{
xml.WriteStartElement("icon");
xml.WriteAttributeString("src", artwork);
xml.WriteAttributeString("src", artworkPath);
xml.WriteEndElement(); // icon
}
}
@ -534,4 +513,22 @@ public class ChannelGuide @@ -534,4 +513,22 @@ public class ChannelGuide
.ToList();
private record ContentRating(Option<string> System, string Value);
private string GetPrioritizedArtworkPath(Domain.Metadata metadata)
{
Option<string> maybeArtwork = Optional(metadata.Artwork).Flatten()
.Filter(a => a.ArtworkKind == ArtworkKind.Poster)
.HeadOrNone()
.Map(a => GetArtworkUrl(a, ArtworkKind.Poster));
if (maybeArtwork.IsNone)
{
maybeArtwork = Optional(metadata.Artwork).Flatten()
.Filter(a => a.ArtworkKind == ArtworkKind.Thumbnail)
.HeadOrNone()
.Map(a => GetArtworkUrl(a, ArtworkKind.Thumbnail));
}
return maybeArtwork.IfNone(string.Empty);
}
}

Loading…
Cancel
Save