jellyfin / jellyfin-plugin-tvheadend

https://jellyfin.org
MIT License
32 stars 19 forks source link

Plugin not loading channel icons #90

Open hardwareadictos opened 2 months ago

hardwareadictos commented 2 months ago

Hey!!

I just set up the plugin and i can watch the channels and get the epg infor on guide refresh, but i can't seem to make Channel icons to appear, i get this error on logs:

Jellyfin-TEST  | [13:04:09] [ERR] [28] Jellyfin.Api.Middleware.ExceptionMiddleware: Error processing request. URL GET /Items/294916a531c0c9f30908b3422bb16212/Images/Primary.
Jellyfin-TEST  | System.InvalidOperationException: Unable to convert any images to local
Jellyfin-TEST  |    at Emby.Server.Implementations.Library.LibraryManager.ConvertImageToLocal(BaseItem item, ItemImageInfo image, Int32 imageIndex, Boolean removeOnFailure)
Jellyfin-TEST  |    at Jellyfin.Api.Controllers.ImageController.GetImageInternal(Guid itemId, ImageType imageType, Nullable`1 imageIndex, String tag, Nullable`1 format, Nullable`1 maxWidth, Nullable`1 maxHeight, Nullable`1 percentPlayed, Nullable`1 unplayedCount, Nullable`1 width, Nullable`1 height, Nullable`1 quality, Nullable`1 fillWidth, Nullable`1 fillHeight, Nullable`1 blur, String backgroundColor, String foregroundLayer, BaseItem item, ItemImageInfo imageInfo)
Jellyfin-TEST  |    at Jellyfin.Api.Controllers.ImageController.GetItemImage(Guid itemId, ImageType imageType, Nullable`1 maxWidth, Nullable`1 maxHeight, Nullable`1 width, Nullable`1 height, Nullable`1 quality, Nullable`1 fillWidth, Nullable`1 fillHeight, String tag, Nullable`1 format, Nullable`1 percentPlayed, Nullable`1 unplayedCount, Nullable`1 blur, String backgroundColor, String foregroundLayer, Nullable`1 imageIndex)
Jellyfin-TEST  |    at lambda_method953(Closure, Object)
Jellyfin-TEST  |    at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfActionResultExecutor.Execute(ActionContext actionContext, IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
Jellyfin-TEST  |    at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)
Jellyfin-TEST  |    at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
Jellyfin-TEST  |    at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
Jellyfin-TEST  |    at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
Jellyfin-TEST  |    at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
Jellyfin-TEST  |    at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
Jellyfin-TEST  |    at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
Jellyfin-TEST  |    at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
Jellyfin-TEST  |    at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|20_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
Jellyfin-TEST  |    at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
Jellyfin-TEST  |    at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
Jellyfin-TEST  |    at Jellyfin.Api.Middleware.ServerStartupMessageMiddleware.Invoke(HttpContext httpContext, IServerApplicationHost serverApplicationHost, ILocalizationManager localizationManager)
Jellyfin-TEST  |    at Jellyfin.Api.Middleware.WebSocketHandlerMiddleware.Invoke(HttpContext httpContext, IWebSocketManager webSocketManager)
Jellyfin-TEST  |    at Jellyfin.Api.Middleware.IPBasedAccessValidationMiddleware.Invoke(HttpContext httpContext, INetworkManager networkManager)
Jellyfin-TEST  |    at Jellyfin.Api.Middleware.LanFilteringMiddleware.Invoke(HttpContext httpContext, INetworkManager networkManager, IServerConfigurationManager serverConfigurationManager)
Jellyfin-TEST  |    at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
Jellyfin-TEST  |    at Jellyfin.Api.Middleware.QueryStringDecodingMiddleware.Invoke(HttpContext httpContext)
Jellyfin-TEST  |    at Swashbuckle.AspNetCore.ReDoc.ReDocMiddleware.Invoke(HttpContext httpContext)
Jellyfin-TEST  |    at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)
Jellyfin-TEST  |    at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)
Jellyfin-TEST  |    at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
Jellyfin-TEST  |    at Jellyfin.Api.Middleware.RobotsRedirectionMiddleware.Invoke(HttpContext httpContext)
Jellyfin-TEST  |    at Jellyfin.Api.Middleware.LegacyEmbyRouteRewriteMiddleware.Invoke(HttpContext httpContext)
Jellyfin-TEST  |    at Microsoft.AspNetCore.ResponseCompression.ResponseCompressionMiddleware.InvokeCore(HttpContext context)
Jellyfin-TEST  |    at Jellyfin.Api.Middleware.ResponseTimeMiddleware.Invoke(HttpContext context, IServerConfigurationManager serverConfigurationManager)
Jellyfin-TEST  |    at Jellyfin.Api.Middleware.ExceptionMiddleware.Invoke(HttpContext context)

Thanks in advance!

hardwareadictos commented 2 months ago

Update: I see those errors also which for me are a no sense:

Jellyfin-TEST  | [10:54:01] [ERR] [46] Jellyfin.Api.Middleware.ExceptionMiddleware: Error processing request. URL GET /Items/3908c3189a3b45e8f734ca4a950672d1/Images/Primary.
Jellyfin-TEST  | System.Net.Http.HttpRequestException: Response status code does not indicate success: 401 (Unauthorized).
Jellyfin-TEST  |    at System.Net.Http.HttpResponseMessage.EnsureSuccessStatusCode()
Jellyfin-TEST  |    at MediaBrowser.Providers.Manager.ProviderManager.SaveImage(BaseItem item, String url, ImageType type, Nullable`1 imageIndex, CancellationToken cancellationToken)
Jellyfin-TEST  |    at Emby.Server.Implementations.Library.LibraryManager.ConvertImageToLocal(BaseItem item, ItemImageInfo image, Int32 imageIndex, Boolean removeOnFailure)
Jellyfin-TEST  |    at Jellyfin.Api.Controllers.ImageController.GetImageInternal(Guid itemId, ImageType imageType, Nullable`1 imageIndex, String tag, Nullable`1 format, Nullable`1 maxWidth, Nullable`1 maxHeight, Nullable`1 percentPlayed, Nullable`1 unplayedCount, Nullable`1 width, Nullable`1 height, Nullable`1 quality, Nullable`1 fillWidth, Nullable`1 fillHeight, Nullable`1 blur, String backgroundColor, String foregroundLayer, BaseItem item, ItemImageInfo imageInfo)

I get a 401 error while i can watch the streams without issues. So my tvheadend user has permissions

hardwareadictos commented 2 months ago

Update 2: So i installed dream Player for TVHEadend on my Pixel 7 and i can sync all channel icons, even i am not suffering from the delay between aduio and video i'm suffering on jellyfin (this seems realted to web player as with internal one on Android works fine)

mcblacky commented 2 months ago

Hi,

After upgrading to Jellyfin 10.9.9 and tvheadend plugin 12.0.0.0 with HTS Tvheadend 4.3-2349~gb774bdd25 I lost my channel icons too. Glad that I am not alone but hope for a solution.

[2024-08-22 00:08:51.593 +02:00] [ERR] [90] Jellyfin.Api.Middleware.ExceptionMiddleware: Error processing request. URL "GET" "/Items/b8843a1be47fc98aa6028fd34b8fb13c/Images/Primary". System.Net.Http.HttpRequestException: Response status code does not indicate success: 401 (Unauthorized). at System.Net.Http.HttpResponseMessage.EnsureSuccessStatusCode() at MediaBrowser.Providers.Manager.ProviderManager.SaveImage(BaseItem item, String url, ImageType type, Nullable1 imageIndex, CancellationToken cancellationToken) at Emby.Server.Implementations.Library.LibraryManager.ConvertImageToLocal(BaseItem item, ItemImageInfo image, Int32 imageIndex, Boolean removeOnFailure) at Jellyfin.Api.Controllers.ImageController.GetImageInternal(Guid itemId, ImageType imageType, Nullable1 imageIndex, String tag, Nullable1 format, Nullable1 maxWidth, Nullable1 maxHeight, Nullable1 percentPlayed, Nullable1 unplayedCount, Nullable1 width, Nullable1 height, Nullable1 quality, Nullable1 fillWidth, Nullable1 fillHeight, Nullable1 blur, String backgroundColor, String foregroundLayer, BaseItem item, ItemImageInfo imageInfo) at Jellyfin.Api.Controllers.ImageController.GetItemImage(Guid itemId, ImageType imageType, Nullable1 maxWidth, Nullable1 maxHeight, Nullable1 width, Nullable1 height, Nullable1 quality, Nullable1 fillWidth, Nullable1 fillHeight, String tag, Nullable1 format, Nullable1 percentPlayed, Nullable1 unplayedCount, Nullable1 blur, String backgroundColor, String foregroundLayer, Nullable1 imageIndex) at lambda_method765(Closure, Object) at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfActionResultExecutor.Execute(ActionContext actionContext, IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask1 actionResultValueTask) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.gAwaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.gAwaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)

hardwareadictos commented 2 months ago

Hi,

After upgrading to Jellyfin 10.9.9 and tvheadend plugin 12.0.0.0 with HTS Tvheadend 4.3-2349~gb774bdd25 I lost my channel icons too. Glad that I am not alone but hope for a solution.

[2024-08-22 00:08:51.593 +02:00] [ERR] [90] Jellyfin.Api.Middleware.ExceptionMiddleware: Error processing request. URL "GET" "/Items/b8843a1be47fc98aa6028fd34b8fb13c/Images/Primary". System.Net.Http.HttpRequestException: Response status code does not indicate success: 401 (Unauthorized). at System.Net.Http.HttpResponseMessage.EnsureSuccessStatusCode() at MediaBrowser.Providers.Manager.ProviderManager.SaveImage(BaseItem item, String url, ImageType type, Nullable1 imageIndex, CancellationToken cancellationToken) at Emby.Server.Implementations.Library.LibraryManager.ConvertImageToLocal(BaseItem item, ItemImageInfo image, Int32 imageIndex, Boolean removeOnFailure) at Jellyfin.Api.Controllers.ImageController.GetImageInternal(Guid itemId, ImageType imageType, Nullable1 imageIndex, String tag, Nullable1 format, Nullable1 maxWidth, Nullable1 maxHeight, Nullable1 percentPlayed, Nullable1 unplayedCount, Nullable1 width, Nullable1 height, Nullable1 quality, Nullable1 fillWidth, Nullable1 fillHeight, Nullable1 blur, String backgroundColor, String foregroundLayer, BaseItem item, ItemImageInfo imageInfo) at Jellyfin.Api.Controllers.ImageController.GetItemImage(Guid itemId, ImageType imageType, Nullable1 maxWidth, Nullable1 maxHeight, Nullable1 width, Nullable1 height, Nullable1 quality, Nullable1 fillWidth, Nullable1 fillHeight, String tag, Nullable1 format, Nullable1 percentPlayed, Nullable1 unplayedCount, Nullable1 blur, String backgroundColor, String foregroundLayer, Nullable1 imageIndex) at lambda_method765(Closure, Object) at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfActionResultExecutor.Execute(ActionContext actionContext, IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask1 actionResultValueTask) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.gAwaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.gAwaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)

Hey! Seems that Jellyfin is not 100% compatible with TVHeadend authentication.

Followed this steps to get this fixed: https://emby.media/community/index.php?/topic/71181-tvheadend-and-emby/

Just create a * user without password, for me it allowed me to add TVHeadend channel and URL on Live TV settings instead the plugin.

For me overall experience is far better without the plugin, icons loads and i don't have that messy out of sync audio with image that i have with the plugin.

mcblacky commented 2 months ago

Many thanks for quick responding!

just create a * user without password, for me it allowed me to add TVHeadend channel and URL on Live TV settings instead the plugin.

I did make a * user as per https://emby.media/community/index.php?/topic/71181-tvheadend-and-emby/

But how did you add TVHeadend channel and URL on Live TV settings. In Jellyfin Live TV settings, I am only able to select HDHomerun and M3U tuner. With option Other, I am only able to do an auto detect. No way to add an URL.

I tried to connect to TVheadend with the plugin without entering username and password but is not connecting. But as I read your message you are not using the plug in. Could you please explain a bit more clear, thanks in advance.

hardwareadictos commented 2 months ago

Many thanks for quick responding!

just create a * user without password, for me it allowed me to add TVHeadend channel and URL on Live TV settings instead the plugin.

I did make a * user as per https://emby.media/community/index.php?/topic/71181-tvheadend-and-emby/

But how did you add TVHeadend channel and URL on Live TV settings. In Jellyfin Live TV settings, I am only able to select HDHomerun and M3U tuner. With option Other, I am only able to do an auto detect. No way to add an URL.

I tried to connect to TVheadend with the plugin without entering username and password but is not connecting. But as I read your message you are not using the plug in. Could you please explain a bit more clear, thanks in advance.

No problem, it's really easy, under Live TV settings add an m3u tunner:

image

And for EPG add something like this xmltv entry:

image

That must be documented also on Jellyfin docs, i did find this information on Emby forums. Nothing on Jellyfin Documentation.

mcblacky commented 2 months ago

hardwareadictos Mucho Gracias,

I had to remove the Jellyfin docker container and the library directory and started from scratch. With your settings the channel icons are back again! But it looks like Jellyfin is using more CPU than before and during watching realtime HD streams it stops now and than (asking to much from my raspberrypi5). With the tvheadend this didn't happen. But the appearance looking more colorful now. Thanks a lot for your help. The makers of tvheadend plugin need to do a bit on the authentication.