dkanada / jellyfin-plugin-intros

Intros Plugin for Jellyfin
GNU General Public License v3.0
180 stars 38 forks source link

Intros not working #64

Open Wolf220 opened 1 year ago

Wolf220 commented 1 year ago

I've tried using both versions of the plugin from the repository, using a default install of jellyfin, but no intros play when i play a movie or tv show. I've tried random default intros, specific default intros, giving it a local directory and file, yet still nothing. I'm using the jelllyfin container in the default docker repos. Does anyone have ideas on how I could get this working?

BamBoozledMC commented 1 year ago

same issue here

ghost commented 1 year ago

I was able to replicate this issue on a fresh install of the plug-in. It seems like it is getting a (404) Not Found exception when trying to get a unique id (from Vimeo?) and I was able to fix it with the following workaround.

  1. Find your intros config xml file, mine is at config/plugins/configurations/Jellyfin.Plugin.Intros.xml
  2. Input the local directory for your prerolls within the <Local> element: <Local>/prerolls</Local>
  3. Input a fake Id in the <Id> element. I used this from an old backup. The plugin will regenerate this id on its own when you try to play a movie/show. <Id>5839ed26-7dcd-4181-8327-8e6d3c9fe1b6</Id>
  4. Restart your server and test it out

image

eniac111 commented 1 year ago

@preroller your hack doesn't work for me for a local file :/

Every time a video is played, the xml config is rolled back to it's default state:

  <Local />
  <Vimeo />
  <Intro>443404335</Intro>
  <Resolution>1080</Resolution>
  <Random>false</Random>
  <Id>00000000-0000-0000-0000-000000000000</Id>
BamBoozledMC commented 1 year ago

@preroller your hack doesn't work for me for a local file :/

Every time a video is played, the xml config is rolled back to it's default state:

  <Local />
  <Vimeo />
  <Intro>443404335</Intro>
  <Resolution>1080</Resolution>
  <Random>false</Random>
  <Id>00000000-0000-0000-0000-000000000000</Id>

Make sure you have the latest version (v1.3.2) it looks like you might have an older version of the plugin I can say the fix did work for me (windows 10, Jellyfin 10.8.9)

KillsT3aler69 commented 1 year ago

Same issue here, the fix doesn't work for me (I have the latest version)

Lodeli commented 1 year ago

Same here, workaround didn't work. Jellyfin in Docker container on a RPI 4. Here's the logged exception with its stack trace.

[ERR] Jellyfin.Server.Middleware.ExceptionMiddleware: Error processing request. URL "GET" "/Users/8055555f0ce84f9897bf76c67e83a172/Items/0509e5a554b55f1fee93000484cb2822/Intros".
System.Net.WebException: The remote server returned an error: (404) Not Found.
   at System.Net.HttpWebRequest.GetResponse()
   at Jellyfin.Plugin.Intros.IntroManager.GetResponse(HttpWebRequest request)
   at Jellyfin.Plugin.Intros.IntroManager.Cache(Int32 intro)
   at Jellyfin.Plugin.Intros.IntroManager.Get()+MoveNext()
   at System.Collections.Generic.LargeArrayBuilder`1.AddRange(IEnumerable`1 items)
   at System.Collections.Generic.EnumerableHelpers.ToArray[T](IEnumerable`1 source)
   at Emby.Server.Implementations.Library.LibraryManager.<>c.<GetIntros>b__132_1(IEnumerable`1 i)
   at System.Linq.Enumerable.SelectManySingleSelectorIterator`2.MoveNext()
   at System.Linq.Enumerable.SelectEnumerableIterator`2.MoveNext()
   at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.ToArray()
   at Jellyfin.Api.Controllers.UserLibraryController.GetIntros(Guid userId, Guid itemId)
   at lambda_method1369(Closure , Object )
   at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|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.InvokeInnerFilterAsync()
--- End of stack trace from previous location ---
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeFilterPipelineAsync()
--- End of stack trace from previous location ---
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
   at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
   at Jellyfin.Server.Middleware.ServerStartupMessageMiddleware.Invoke(HttpContext httpContext, IServerApplicationHost serverApplicationHost, ILocalizationManager localizationManager)
   at Jellyfin.Server.Middleware.WebSocketHandlerMiddleware.Invoke(HttpContext httpContext, IWebSocketManager webSocketManager)
   at Jellyfin.Server.Middleware.IpBasedAccessValidationMiddleware.Invoke(HttpContext httpContext, INetworkManager networkManager)
   at Jellyfin.Server.Middleware.LanFilteringMiddleware.Invoke(HttpContext httpContext, INetworkManager networkManager, IServerConfigurationManager serverConfigurationManager)
   at Microsoft.AspNetCore.Authorization.Policy.AuthorizationMiddlewareResultHandler.HandleAsync(RequestDelegate next, HttpContext context, AuthorizationPolicy policy, PolicyAuthorizationResult authorizeResult)
   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
   at Jellyfin.Server.Middleware.QueryStringDecodingMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.ReDoc.ReDocMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)
   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
   at Jellyfin.Server.Middleware.RobotsRedirectionMiddleware.Invoke(HttpContext httpContext)
   at Jellyfin.Server.Middleware.LegacyEmbyRouteRewriteMiddleware.Invoke(HttpContext httpContext)
   at Microsoft.AspNetCore.ResponseCompression.ResponseCompressionMiddleware.InvokeCore(HttpContext context)
   at Jellyfin.Server.Middleware.ResponseTimeMiddleware.Invoke(HttpContext context, IServerConfigurationManager serverConfigurationManager)
   at Jellyfin.Server.Middleware.ExceptionMiddleware.Invoke(HttpContext context)
ghost commented 1 year ago

The issue is related to the internet caching. There's a new fork that removes Vimeo and introduces new features like rules for genres, tags, and studios. More details can be found in the pre-roll community discord.

Lodeli commented 1 year ago

I've noticed only now that prerolls.video is down, I really missed this! Now trying the new fork: working good by now, thank you!