From f07163f905a6e71f5280822145d27e8fbc75222a Mon Sep 17 00:00:00 2001 From: Jason Dove <1695733+jasongdove@users.noreply.github.com> Date: Tue, 11 Nov 2025 10:40:15 -0600 Subject: [PATCH] allow custom missing album art --- CHANGELOG.md | 2 ++ ErsatzTV.Core/FFmpeg/SongVideoGenerator.cs | 2 +- .../Core/FFmpeg/TranscodingTests.cs | 2 +- ErsatzTV/ErsatzTV.csproj | 2 +- ...lbum_cover_512.png => _song_album_cover_512.png} | Bin .../Services/RunOnce/ResourceExtractorService.cs | 2 +- 6 files changed, 6 insertions(+), 4 deletions(-) rename ErsatzTV/Resources/{song_album_cover_512.png => _song_album_cover_512.png} (100%) diff --git a/CHANGELOG.md b/CHANGELOG.md index eb55f7425..3cbbc5904 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -41,6 +41,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Error streams will prioritize using `background.png` if it exists - Replacing this `background.png` file will allow custom error/offline backgrounds - Add `Troubleshoot Playback` buttons on movie and episode detail pages +- Add song background and missing album art customization + - Default files start with an underscore; custom versions must remove the underscore ### Fixed - Fix HLS Direct playback with Jellyfin 10.11 diff --git a/ErsatzTV.Core/FFmpeg/SongVideoGenerator.cs b/ErsatzTV.Core/FFmpeg/SongVideoGenerator.cs index 03b173c86..e2a45d880 100644 --- a/ErsatzTV.Core/FFmpeg/SongVideoGenerator.cs +++ b/ErsatzTV.Core/FFmpeg/SongVideoGenerator.cs @@ -167,7 +167,7 @@ public class SongVideoGenerator : ISongVideoGenerator { Id = 0, ArtworkKind = ArtworkKind.Thumbnail, - Path = Path.Combine(FileSystemLayout.ResourcesCacheFolder, "song_album_cover_512.png") + Path = _localFileSystem.GetCustomOrDefaultFile(FileSystemLayout.ResourcesCacheFolder, "song_album_cover_512.png") }); // signal that we want to use cover art as watermark diff --git a/ErsatzTV.Scanner.Tests/Core/FFmpeg/TranscodingTests.cs b/ErsatzTV.Scanner.Tests/Core/FFmpeg/TranscodingTests.cs index ee4b16b03..b9ae0c590 100644 --- a/ErsatzTV.Scanner.Tests/Core/FFmpeg/TranscodingTests.cs +++ b/ErsatzTV.Scanner.Tests/Core/FFmpeg/TranscodingTests.cs @@ -288,7 +288,7 @@ public class TranscodingTests localFileSystem, LoggerFactory.CreateLogger()); - var songVideoGenerator = new SongVideoGenerator(tempFilePool, mockImageCache, service); + var songVideoGenerator = new SongVideoGenerator(tempFilePool, mockImageCache, service, localFileSystem); var channel = new Channel(Guid.NewGuid()) { diff --git a/ErsatzTV/ErsatzTV.csproj b/ErsatzTV/ErsatzTV.csproj index 91bb64f34..953313103 100644 --- a/ErsatzTV/ErsatzTV.csproj +++ b/ErsatzTV/ErsatzTV.csproj @@ -85,7 +85,7 @@ - + diff --git a/ErsatzTV/Resources/song_album_cover_512.png b/ErsatzTV/Resources/_song_album_cover_512.png similarity index 100% rename from ErsatzTV/Resources/song_album_cover_512.png rename to ErsatzTV/Resources/_song_album_cover_512.png diff --git a/ErsatzTV/Services/RunOnce/ResourceExtractorService.cs b/ErsatzTV/Services/RunOnce/ResourceExtractorService.cs index b0da951de..0aed40f84 100644 --- a/ErsatzTV/Services/RunOnce/ResourceExtractorService.cs +++ b/ErsatzTV/Services/RunOnce/ResourceExtractorService.cs @@ -17,7 +17,7 @@ public class ResourceExtractorService : BackgroundService Assembly assembly = typeof(ResourceExtractorService).GetTypeInfo().Assembly; await ExtractResource(assembly, "_background.png", stoppingToken); - await ExtractResource(assembly, "song_album_cover_512.png", stoppingToken); + await ExtractResource(assembly, "_song_album_cover_512.png", stoppingToken); await ExtractResource(assembly, "_song_background_1.png", stoppingToken); await ExtractResource(assembly, "_song_background_2.png", stoppingToken); await ExtractResource(assembly, "_song_background_3.png", stoppingToken);