From 44ec0f8a0f5beb667565c8f5dfce6c1624fa54b0 Mon Sep 17 00:00:00 2001
From: Jason Dove <1695733+jasongdove@users.noreply.github.com>
Date: Tue, 12 Aug 2025 14:33:52 +0000
Subject: [PATCH] add more template data to text graphics element (#2304)
---
CHANGELOG.md | 4 +-
.../FFmpeg/FFmpegLibraryProcessService.cs | 1 +
.../Repositories/ITemplateDataRepository.cs | 7 +-
.../Streaming/GraphicsEngineContext.cs | 1 +
ErsatzTV.Core/Metadata/EpgTemplateDataKey.cs | 11 ++
.../Metadata/MediaItemTemplateDataKey.cs | 29 ++++
.../Repositories/TemplateDataRepository.cs | 164 ++++++++++++++++--
ErsatzTV.Infrastructure/Epg/EpgReader.cs | 51 ++++++
.../Epg/Models/EpgCategory.cs | 12 ++
ErsatzTV.Infrastructure/Epg/Models/EpgDate.cs | 9 +
.../Epg/Models/EpgDescription.cs | 12 ++
.../Epg/Models/EpgEpisodeNum.cs | 12 ++
ErsatzTV.Infrastructure/Epg/Models/EpgIcon.cs | 9 +
.../Epg/Models/EpgProgramme.cs | 43 +++++
.../Epg/Models/EpgRating.cs | 9 +
.../Epg/Models/EpgTitle.cs | 12 ++
.../Streaming/GraphicsEngine.cs | 53 ++++--
17 files changed, 399 insertions(+), 40 deletions(-)
create mode 100644 ErsatzTV.Core/Metadata/EpgTemplateDataKey.cs
create mode 100644 ErsatzTV.Core/Metadata/MediaItemTemplateDataKey.cs
create mode 100644 ErsatzTV.Infrastructure/Epg/EpgReader.cs
create mode 100644 ErsatzTV.Infrastructure/Epg/Models/EpgCategory.cs
create mode 100644 ErsatzTV.Infrastructure/Epg/Models/EpgDate.cs
create mode 100644 ErsatzTV.Infrastructure/Epg/Models/EpgDescription.cs
create mode 100644 ErsatzTV.Infrastructure/Epg/Models/EpgEpisodeNum.cs
create mode 100644 ErsatzTV.Infrastructure/Epg/Models/EpgIcon.cs
create mode 100644 ErsatzTV.Infrastructure/Epg/Models/EpgProgramme.cs
create mode 100644 ErsatzTV.Infrastructure/Epg/Models/EpgRating.cs
create mode 100644 ErsatzTV.Infrastructure/Epg/Models/EpgTitle.cs
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 345b8d1c..7ad987e6 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -25,7 +25,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- Supported in playback troubleshooting and YAML playouts
- Displays multi-line text in a specified font, color, location, z-index
- Supports constant opacity and opacity expression
- - Supports variable replacement for music videos
+ - Supports EPG and Media Item variable replacement
+ - EPG data is sourced from XMLTV
+ - Media Item data is sourced from the currently playing media item
- Add `image` graphics element type
- Supported in playback troubleshooting and YAML playouts
- Displays an image, similar to a watermark
diff --git a/ErsatzTV.Core/FFmpeg/FFmpegLibraryProcessService.cs b/ErsatzTV.Core/FFmpeg/FFmpegLibraryProcessService.cs
index 98fdc758..1d7df740 100644
--- a/ErsatzTV.Core/FFmpeg/FFmpegLibraryProcessService.cs
+++ b/ErsatzTV.Core/FFmpeg/FFmpegLibraryProcessService.cs
@@ -515,6 +515,7 @@ public class FFmpegLibraryProcessService : IFFmpegProcessService
graphicsEngineInput = new GraphicsEngineInput();
graphicsEngineContext = new GraphicsEngineContext(
+ channel.Number,
audioVersion.MediaItem,
graphicsElementContexts,
new Resolution { Width = desiredState.ScaledSize.Width, Height = desiredState.ScaledSize.Height },
diff --git a/ErsatzTV.Core/Interfaces/Repositories/ITemplateDataRepository.cs b/ErsatzTV.Core/Interfaces/Repositories/ITemplateDataRepository.cs
index 57322df6..e1da3e38 100644
--- a/ErsatzTV.Core/Interfaces/Repositories/ITemplateDataRepository.cs
+++ b/ErsatzTV.Core/Interfaces/Repositories/ITemplateDataRepository.cs
@@ -4,8 +4,7 @@ namespace ErsatzTV.Core.Interfaces.Repositories;
public interface ITemplateDataRepository
{
- public Task