aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCody Robibero <cody@robibe.ro>2026-08-05 18:38:51 -0400
committerGitHub <noreply@github.com>2026-08-05 18:38:51 -0400
commitef1ce3d6eb95e482a97af1ba858bf6c2ec02cc83 (patch)
tree64d7e42b109d1db04db3245faa3211499356cc18 /src
parent07fb3503334ba3df1c947e6385a0a85c7e1e29a5 (diff)
parentf49a501f71b22b02826c13fad2fc4ebaf82ee3ec (diff)
Merge pull request #17549 from theguymadmax/revert-livetv-channel-icon-refresh
Revert "Refresh Live TV channel icons on every guide update."
Diffstat (limited to 'src')
-rw-r--r--src/Jellyfin.LiveTv/Channels/ChannelManager.cs4
-rw-r--r--src/Jellyfin.LiveTv/Guide/GuideManager.cs19
-rw-r--r--src/Jellyfin.LiveTv/LiveTvChannelImageHelper.cs33
3 files changed, 18 insertions, 38 deletions
diff --git a/src/Jellyfin.LiveTv/Channels/ChannelManager.cs b/src/Jellyfin.LiveTv/Channels/ChannelManager.cs
index e421601092..ed02fe6a1d 100644
--- a/src/Jellyfin.LiveTv/Channels/ChannelManager.cs
+++ b/src/Jellyfin.LiveTv/Channels/ChannelManager.cs
@@ -14,7 +14,6 @@ using Jellyfin.Database.Implementations.Entities;
using Jellyfin.Database.Implementations.Enums;
using Jellyfin.Extensions;
using Jellyfin.Extensions.Json;
-using Jellyfin.LiveTv;
using MediaBrowser.Common.Extensions;
using MediaBrowser.Controller.Channels;
using MediaBrowser.Controller.Configuration;
@@ -1110,8 +1109,9 @@ namespace Jellyfin.LiveTv.Channels
item.Path = mediaSource?.Path;
}
- if (LiveTvChannelImageHelper.UpdateChannelImageIfNeeded(item, null, info.ImageUrl))
+ if (!string.IsNullOrEmpty(info.ImageUrl) && !item.HasImage(ImageType.Primary))
{
+ item.SetImagePath(ImageType.Primary, info.ImageUrl);
_logger.LogDebug("Forcing update due to ImageUrl {0}", item.Name);
forceUpdate = true;
}
diff --git a/src/Jellyfin.LiveTv/Guide/GuideManager.cs b/src/Jellyfin.LiveTv/Guide/GuideManager.cs
index 4e1b62cdf9..41520f8789 100644
--- a/src/Jellyfin.LiveTv/Guide/GuideManager.cs
+++ b/src/Jellyfin.LiveTv/Guide/GuideManager.cs
@@ -5,7 +5,6 @@ using System.Threading;
using System.Threading.Tasks;
using Jellyfin.Data.Enums;
using Jellyfin.Extensions;
-using Jellyfin.LiveTv;
using Jellyfin.LiveTv.Configuration;
using Jellyfin.LiveTv.Listings;
using MediaBrowser.Common.Configuration;
@@ -450,9 +449,23 @@ public class GuideManager : IGuideManager
item.Name = channelInfo.Name;
- if (LiveTvChannelImageHelper.UpdateChannelImageIfNeeded(item, channelInfo.ImagePath, channelInfo.ImageUrl))
+ var currentPrimary = item.GetImageInfo(ImageType.Primary, 0);
+ var imageUrlIsNull = string.IsNullOrWhiteSpace(channelInfo.ImageUrl);
+
+ // Update channel image if image URL has changed
+ if (currentPrimary is null
+ || (!imageUrlIsNull && !string.Equals(currentPrimary.Path, channelInfo.ImageUrl, StringComparison.Ordinal)))
{
- forceUpdate = true;
+ if (!string.IsNullOrWhiteSpace(channelInfo.ImagePath))
+ {
+ item.SetImagePath(ImageType.Primary, channelInfo.ImagePath);
+ forceUpdate = true;
+ }
+ else if (!imageUrlIsNull)
+ {
+ item.SetImagePath(ImageType.Primary, channelInfo.ImageUrl);
+ forceUpdate = true;
+ }
}
if (isNew)
diff --git a/src/Jellyfin.LiveTv/LiveTvChannelImageHelper.cs b/src/Jellyfin.LiveTv/LiveTvChannelImageHelper.cs
deleted file mode 100644
index a590193b5f..0000000000
--- a/src/Jellyfin.LiveTv/LiveTvChannelImageHelper.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-using MediaBrowser.Controller.Entities;
-using MediaBrowser.Model.Entities;
-
-namespace Jellyfin.LiveTv;
-
-/// <summary>
-/// Helpers for keeping Live TV channel icons in sync with guide data.
-/// </summary>
-internal static class LiveTvChannelImageHelper
-{
- /// <summary>
- /// Applies the channel icon from guide or tuner metadata.
- /// Called on each guide refresh so remote icons are re-downloaded even when the URL is unchanged.
- /// </summary>
- /// <param name="item">The channel item.</param>
- /// <param name="imagePath">The local image path from the tuner, if any.</param>
- /// <param name="imageUrl">The remote image URL from the guide provider, if any.</param>
- /// <returns><c>true</c> when the item image metadata was updated.</returns>
- internal static bool UpdateChannelImageIfNeeded(BaseItem item, string? imagePath, string? imageUrl)
- {
- var newImageSource = !string.IsNullOrWhiteSpace(imagePath)
- ? imagePath
- : imageUrl;
-
- if (string.IsNullOrWhiteSpace(newImageSource))
- {
- return false;
- }
-
- item.SetImagePath(ImageType.Primary, newImageSource);
- return true;
- }
-}