Revert "Refresh Live TV channel icons on every guide update."

This reverts commit 372c1681d8.
This commit is contained in:
theguymadmax
2026-08-05 13:18:08 -04:00
parent f6ca06e9bf
commit f49a501f71
4 changed files with 18 additions and 89 deletions
@@ -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;
}
+16 -3
View File
@@ -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)
@@ -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;
}
}
@@ -1,51 +0,0 @@
using Jellyfin.LiveTv;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.LiveTv;
using MediaBrowser.Model.Entities;
using Xunit;
namespace Jellyfin.LiveTv.Tests;
public class LiveTvChannelImageHelperTests
{
[Fact]
public void UpdateChannelImageIfNeeded_NoSource_DoesNotUpdate()
{
var channel = new LiveTvChannel { Name = "Test Channel" };
var updated = LiveTvChannelImageHelper.UpdateChannelImageIfNeeded(channel, null, null);
Assert.False(updated);
Assert.False(channel.HasImage(ImageType.Primary));
}
[Fact]
public void UpdateChannelImageIfNeeded_WithUrl_AppliesUrl()
{
var channel = new LiveTvChannel { Name = "Test Channel" };
var updated = LiveTvChannelImageHelper.UpdateChannelImageIfNeeded(
channel,
null,
"https://example.com/icon.png");
Assert.True(updated);
Assert.True(channel.HasImage(ImageType.Primary));
Assert.Equal("https://example.com/icon.png", channel.GetImagePath(ImageType.Primary));
}
[Fact]
public void UpdateChannelImageIfNeeded_SameUrl_StillUpdates()
{
var channel = new LiveTvChannel { Name = "Test Channel" };
LiveTvChannelImageHelper.UpdateChannelImageIfNeeded(channel, null, "https://example.com/icon.png");
var updated = LiveTvChannelImageHelper.UpdateChannelImageIfNeeded(
channel,
null,
"https://example.com/icon.png");
Assert.True(updated);
Assert.Equal("https://example.com/icon.png", channel.GetImagePath(ImageType.Primary));
}
}