Coder Social home page Coder Social logo

thomst08 / requestrr Goto Github PK

View Code? Open in Web Editor NEW

This project forked from darkalfx/requestrr

160.0 1.0 11.0 6.79 MB

Requestrr is a chatbot used to simplify using services like Sonarr/Radarr/Ombi via the use of chat. Current platform is Discord only, but the bot was built around the ideology of quick adaptation for new features as well as new platforms.

License: MIT License

JavaScript 25.25% C# 50.53% HTML 0.17% SCSS 24.04%

requestrr's Introduction

Paypal Discord DockerHub DockerHub

Requestrr

logo

Requestrr is a chatbot used to simplify using services like Sonarr/Radarr/Overseerr/Ombi via the use of chat!

Features

  • Ability to request content via Discord using slash commands, buttons and more!
  • Users can get notified when their requests complete
  • Sonarr (V2-V4) & Radarr (V2-V5) integration with support for multiple instance via Overseerr (only for 4k/1080p)
  • Overseerr integration with support for per user permissions/quotas and issue submission
  • Ombi (V3/V4) integration with support for per user roles/quotas and issue submission
  • Fully configurable via a web portal

Installation & Configuration

Refer to the Wiki for detailed steps: https://github.com/thomst08/requestrr/wiki


Docker Set-up & Start

Open a command prompt/terminal and then use the following command create and start the container:

    docker run -d \
      --name requestrr \
      -p 4545:4545 \
      -v path to config:/root/config \
      --restart=unless-stopped \
      thomst08/requestrr

You can also choose to run the container as a different user. See docker run reference for how to set the user for your container.

Then simply access the web portal at http://youraddress:4545/ to create your admin account, then you can configure everything through the web portal.
Once you have configured the bot and invited it to your Discord server, simply type /help to see all available commands.

If you just need commands to quickly setup Requestrr with no issues, use the following commands:

mkdir /opt/Requestrr
mkdir /opt/Requestrr/config
docker run -d \
  --name requestrr \
  -p 4545:4545 \
  -v /opt/Requestrr/config:/root/config \
  --restart=unless-stopped \
  thomst08/requestrr

Build Instructions

Refer to the Wiki for detailed steps on how to build: https://github.com/thomst08/requestrr/wiki/Build-Instructions


Thank you list

Thank you goes out to the following people:

  • @darkalfx - Creator of Requestrr, without this person, Requestrr would not exist.

requestrr's People

Contributors

arpitgupta avatar bradpeczka avatar cyb3rgh05t avatar darkalfx avatar hampo avatar joshfng avatar mchangrh avatar mikeporterdev avatar sct avatar seanzhang98 avatar thomst08 avatar zenjabba avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

requestrr's Issues

Having no tag for Radarr breaks requests

I didn't have a tag and it failed, I created a new tag and added it. Now it works. I'm not sure how not having a tag causes a quality profile error.

fail: Requestrr.WebApi.RequestrrBot.DownloadClients.Radarr.RadarrClient[0]
An error while requesting movie "Pearl" from Radarr: RadarrMovieCreation failed: Bad Request - [
{
"propertyName": "QualityProfileId",
"errorMessage": "\u0027Quality Profile Id\u0027 must be greater than \u00270\u0027.",
"attemptedValue": -1,
"severity": "error",
"errorCode": "GreaterThanValidator",
"formattedMessageArguments": [],
"formattedMessagePlaceholderValues": {
"comparisonValue": 0,
"comparisonProperty": "",
"propertyName": "Quality Profile Id",
"propertyValue": -1
}
},
{
"propertyName": "QualityProfileId",
"errorMessage": "Quality Profile does not exist",
"attemptedValue": -1,
"severity": "error",
"errorCode": "QualityProfileExistsValidator",
"formattedMessageArguments": [],
"formattedMessagePlaceholderValues": {
"propertyName": "Quality Profile Id",
"propertyValue": -1
}
}
]
System.Exception: RadarrMovieCreation failed: Bad Request - [
{
"propertyName": "QualityProfileId",
"errorMessage": "\u0027Quality Profile Id\u0027 must be greater than \u00270\u0027.",
"attemptedValue": -1,
"severity": "error",
"errorCode": "GreaterThanValidator",
"formattedMessageArguments": [],
"formattedMessagePlaceholderValues": {
"comparisonValue": 0,
"comparisonProperty": "",
"propertyName": "Quality Profile Id",
"propertyValue": -1
}
},
{
"propertyName": "QualityProfileId",
"errorMessage": "Quality Profile does not exist",
"attemptedValue": -1,
"severity": "error",
"errorCode": "QualityProfileExistsValidator",
"formattedMessageArguments": [],
"formattedMessagePlaceholderValues": {
"propertyName": "Quality Profile Id",
"propertyValue": -1
}
}
]
at Requestrr.WebApi.Extensions.HttpResponseMessageExtensions.ThrowIfNotSuccessfulAsync(HttpResponseMessage responseMessage, String message, Func`2 getErrorFunc) in D:\Users\thoms\Documents\GitHub\requestrr\Requestrr.WebApi\Extensions\HttpResponseMessageExtensions.cs:line 35
at Requestrr.WebApi.RequestrrBot.DownloadClients.Radarr.RadarrClientV3.CreateMovieInRadarr(MovieRequest request, Movie movie) in D:\Users\thoms\Documents\GitHub\requestrr\Requestrr.WebApi\RequestrrBot\DownloadClients\Radarr\RadarrClientV3.cs:line 282
at Requestrr.WebApi.RequestrrBot.DownloadClients.Radarr.RadarrClientV3.RequestMovieAsync(MovieRequest request, Movie movie) in D:\Users\thoms\Documents\GitHub\requestrr\Requestrr.WebApi\RequestrrBot\DownloadClients\Radarr\RadarrClientV3.cs:line 229
fail: Requestrr.WebApi.RequestrrBot.ChatBot[0]
Error while handling interaction: An error occurred while requesting a movie from Radarr
System.Exception: An error occurred while requesting a movie from Radarr
at Requestrr.WebApi.RequestrrBot.DownloadClients.Radarr.RadarrClientV3.RequestMovieAsync(MovieRequest request, Movie movie) in D:\Users\thoms\Documents\GitHub\requestrr\Requestrr.WebApi\RequestrrBot\DownloadClients\Radarr\RadarrClientV3.cs:line 243
at Requestrr.WebApi.RequestrrBot.Movies.MovieRequestingWorkflow.RequestMovieAsync(Int32 theMovieDbId) in D:\Users\thoms\Documents\GitHub\requestrr\Requestrr.WebApi\RequestrrBot\Movies\MovieRequestingWorkflow.cs:line 110
at Requestrr.WebApi.RequestrrBot.ChatBot.HandleMovieRequestAsync(ComponentInteractionCreateEventArgs e) in D:\Users\thoms\Documents\GitHub\requestrr\Requestrr.WebApi\RequestrrBot\ChatBot.cs:line 426
at Requestrr.WebApi.RequestrrBot.ChatBot.DiscordComponentInteractionCreatedHandler(DiscordClient client, ComponentInteractionCreateEventArgs e) in D:\Users\thoms\Documents\GitHub\requestrr\Requestrr.WebApi\RequestrrBot\ChatBot.cs:line 352
warn: Requestrr.WebApi.RequestrrBot.ChatBot[0]
Bot has been restarted.

“The application did not respond” - error within discord

Hey, thanks for all your time and effort on this bot. It’s great when it works however we are getting almost daily “the application did not respond” within discord.

We manage a few discord servers. So we have an about 5 requestrr containers.. actually 10… 5 for regular requests and 5 for foreign requests that get added to different arr’s.

We split the containers we use between all of the discord channels to split the load. But a lot lately we are getting this error. We dont know if it’s a requestrr error or an issue with discord api. A lot of the time we either have to reboot the container (sometimes is fixes it), redeploy the container, and if that doesn’t work kick the bot and readd it to discord. It was manageable at first but now we are getting it more and more.

Im hoping we can work together to resolve this issue.
IMG_6565

No longer works behind nginx with a base path

I've upgraded from v2.1.3 (last release under darkalfx/requestrr), to 2.1.6 here, and our reverse proxy configuration no longer works.

I'm using a base path of /requestrr:

  "Port": 4545,
  "BaseUrl": "/requestrr",
  "DisableAuthentication": true,

And I handle the auth via Organizr.

Previously this configuration worked simply as:

    # ...
    proxy_set_header Host $host;
    proxy_redirect  http://  $scheme://;
    proxy_http_version 1.1;
    proxy_set_header Connection "";
    proxy_cache_bypass $cookie_session;
    proxy_no_cache $cookie_session;

    # ...

    location /requestrr {
      # auth_request /organizr-auth/0;

      proxy_pass http://10.242.6.109:4545/requestrr;
    }

Now when I access https://.../requestrr I get an infinite redirect loop, which looks like:

chrome_6UvVKL8rWM

This still works correctly while accessing http://10.242.6.109:4545/requestrr, it's just the reverse proxy not working anymore, which worked fine on 2.1.3/2.1.2

Seems that the requests are not properly using the basepath, for some reasons.

[Bug] Duplicate category names causes bot start to fail

See this comment for the diagnosed problem:

Issue stemmed from having multiple categories with the same name across Radarr and Sonarr. Making sure no category name was repeated twice fixed the issue (e.g. don't have an anime category in both the Radarr and Sonarr configs).

Original post:

When I start the bot (running in a Docker container) I get the following error:

requestrr  | [2024-02-29 12:46:30 +00:00] [0   /            ] [Crit ] There was an error registering application commands: Invalid Form Body
requestrr  | DSharpPlus.Exceptions.BadRequestException: Bad request: 400
requestrr  |    at DSharpPlus.Net.DiscordApiClient.BulkOverwriteGuildApplicationCommandsAsync(UInt64 application_id, UInt64 guild_id, IEnumerable`1 commands)
requestrr  |    at DSharpPlus.SlashCommands.SlashCommandsExtension.<>c__DisplayClass39_0.<<RegisterCommands>b__0>d.MoveNext()

It has registered slash commands (probably from first boot?), but using any of them results in "The application did not respond", with no activity in the logs.

Only network settings I have set up is that DNS is routed through Pihole, running in an adjacent container. None of my other container have network connectivity problems with my routing setup.
docker-compose.yaml:

version: "3.4"
services:
  requestrr:
    image: thomst08/requestrr
    hostname: requestrr
    container_name: requestrr
    ports:
    - 4545:4545
    volumes:
    - ./config:/root/config
    restart: unless-stopped
    dns:
      - 192.168.50.58 # private IP of the raspberry pi hosting both Pihole and requestrr. I also use this setup in other containers.

I have no custom language files. This is from a clean install right after setting up Radarr and Sonarr connections.

Running requestrr 2.1.5

[Feature Request] Delete movies and series

Hi!

I think it would be really handy to be able to send a Radarr movie or Sonarr series deletion request directly via the Discord bot. We could then choose whether to delete the files on the storage space as well.
We could imagine a /delete <movie|tv> <media name> and set the files deletion choice on the web UI, or directly /delete <option> <movie|tv> <media name> (I think the first solution is easier to understand and implement).

In short, the Discord bot would send an API request equivalent to this:
image

[Feature Request] Accept requests with the bot

Hi devs✌️,

First of all, thanks a lot for your great work.

I have an idea for a new feature which I am currently missing. I think it would be great to implement a feature that allows users who are also able to approve requests on Overseerr/Jellyseerr to also approve them via Requestrr.

If this is already possible, please explain to me how to activate it.

Request failing error 400

Hey Team,

I have Requestrr set up on Unraid and attached it with Discord. I can make a request on Discord but in Overseer the status shows failed. Has anyone else ran into this and found a fix? I checked the interwebs and the only thing I've found is that I already have the movie, I double-checked and I don't.

LOG
2024-02-25T04:39:53.038Z [error][Radarr]: Failed to add movie to Radarr. This might happen if the movie already exists, in which case you can safely ignore this error.{"errorMessage":"Request failed with status code 400","options":{"minimumAvailability":"released","monitored":true,"profileId":-1,"qualityProfileId":-1,"rootFolderPath":"/media/movies","searchNow":true,"tags":[],"title":"The Judge","tmdbId":205587,"year":2014},"response":[{"attemptedValue":-1,"errorCode":"GreaterThanValidator","errorMessage":"'Quality Profile Id' must be greater than '0'.","formattedMessageArguments":[],"formattedMessagePlaceholderValues":{"comparisonProperty":"","comparisonValue":0,"propertyName":"Quality Profile Id","propertyValue":-1},"propertyName":"QualityProfileId","severity":"error"},{"attemptedValue":-1,"errorCode":"QualityProfileExistsValidator","errorMessage":"Quality Profile does not exist","formattedMessageArguments":[],"formattedMessagePlaceholderValues":{"propertyName":"Quality Profile Id","propertyValue":-1},"propertyName":"QualityProfileId","severity":"error"}]}

how to start the cmd file minimized?

hi, is there a way to start "Requestrr.WebApi.exe" minimized on windows startup? Since I use plex and radarr on my own computer I don't want to be bothered with the cmd file in my taskbar or when I alt tab between windows, thanks!

[Feature Request] Exclusive channel for issues

Hello,

I would like to suggest a new feature for Requestrr. However, if this is already possible, I would like to know how to set this up.

It would be very helpful if there was an option to have a separate channel for reporting issues where users cannot request films or TV shows. This would make it much easier to organize and manage issue reports and ensure that requests and issue reports remain separate.

Feature Request:

• A new command or setting to define a channel exclusively for problem reports.
• Users should not be able to submit requests for films or series on this channel.

Thank you for considering my suggestion!

Providing musl builds

Hello mate :). Thanks for taking the time to revive requestrr.

I've had a very short chat with hotio, who previously had requestrr in his "fleet" of containers. It was since deprecated, since the old version of requestrr was archived.

But he (we) needs musl builds. Can you provide those? I'm guessing they're needed for working nicely with Alpine Linux, that hotio uses for his base image for all his containers.

Kind regards,
Engels

"The application did not respond" error for first command then works after

hi, this error seems to be similar to #9 however i only have one instance set up connected to one server. it appears to need to "wake up" the bot or something as the first command essentially always fails, then a second command right after that will always work, subsequent commands seem to be working for any sustained activity after that, but if left for 5-10 minutes or more it seems to go back to this state,

here are some of the logs and what i am seeing:

[2024-07-11 11:42:23 +00:00] [111 /ConnectionCl] [Crit ] Connection terminated (4000, ''), reconnecting
[2024-07-11 15:38:19 +00:00] [111 /ConnectionCl] [Crit ] Connection terminated (4000, ''), reconnecting
fail: Requestrr.WebApi.RequestrrBot.ChatBot[0]
      Error while sending ping command: Not found: 404
      DSharpPlus.Exceptions.NotFoundException: Not found: 404
         at DSharpPlus.Net.DiscordApiClient.CreateInteractionResponseAsync(UInt64 interaction_id, String interaction_token, InteractionResponseType type, DiscordInteractionResponseBuilder builder)
         at Requestrr.WebApi.RequestrrBot.ChatClients.Discord.DiscordPingWorkFlow.HandlePingAsync() in D:\Users\thoms\Documents\GitHub\requestrr\Requestrr.WebApi\RequestrrBot\ChatClients\Discord\DiscordPingWorkFlow.cs:line 22
         at Requestrr.WebApi.RequestrrBot.SlashCommands.Ping(InteractionContext ctx)
fail: Requestrr.WebApi.RequestrrBot.ChatBot[0]
      Error while sending ping command: Not found: 404
      DSharpPlus.Exceptions.NotFoundException: Not found: 404
         at DSharpPlus.Net.DiscordApiClient.CreateInteractionResponseAsync(UInt64 interaction_id, String interaction_token, InteractionResponseType type, DiscordInteractionResponseBuilder builder)
         at Requestrr.WebApi.RequestrrBot.ChatClients.Discord.DiscordPingWorkFlow.HandlePingAsync() in D:\Users\thoms\Documents\GitHub\requestrr\Requestrr.WebApi\RequestrrBot\ChatClients\Discord\DiscordPingWorkFlow.cs:line 23
         at Requestrr.WebApi.RequestrrBot.SlashCommands.Ping(InteractionContext ctx)
[2024-07-11 16:09:27 +00:00] [101 /Startup     ] [Info ] DSharpPlus, version 4.4.6+3a90ac8625573943ffe930a328de81180ad193dd
[2024-07-11 16:09:37 +00:00] [111 /ConnectionCl] [Info ] Connection terminated (1000, '')
fail: Requestrr.WebApi.RequestrrBot.ChatBot[0]
      Error while sending ping command: Not found: 404
      DSharpPlus.Exceptions.NotFoundException: Not found: 404
         at DSharpPlus.Net.DiscordApiClient.CreateInteractionResponseAsync(UInt64 interaction_id, String interaction_token, InteractionResponseType type, DiscordInteractionResponseBuilder builder)
         at Requestrr.WebApi.RequestrrBot.ChatClients.Discord.DiscordPingWorkFlow.HandlePingAsync() in D:\Users\thoms\Documents\GitHub\requestrr\Requestrr.WebApi\RequestrrBot\ChatClients\Discord\DiscordPingWorkFlow.cs:line 23
         at Requestrr.WebApi.RequestrrBot.SlashCommands.Ping(InteractionContext ctx)

is this a misconfiguration with my side or on the discord bot side? this is my first discord bot i have created or set up so i'm not super well versed in setting them up, so i could be missing something

Latest Sonarr update just hangs on Requestrr requests on "Sending..."

Latest Sonarr update appears to have potentially broken Requestrr, Radarr still works:

fail: Requestrr.WebApi.RequestrrBot.DownloadClients.Sonarr.SonarrClient[0] An error occurred while searching available tv shows with Sonarr: SonarrSeriesLookupByTvDbId failed: Service Unavailable - { "message": "Search for \u0027tvdb:373522\u0027 failed. Invalid response received from SkyHook.", �� "description": "NzbDrone.Core.MetadataSource.SkyHook.SkyHookException: Search for \u0027tvdb:373522\u0027 failed. Invalid response received from SkyHook.\n ---\u003E System.Net.Http.HttpRequestException: An error occurred while sending the request.\n ---\u003E System.IO.IOException: The request was aborted.\n ---\u003E System.IO.IOException: Unable to read data from the transport connection: Connection reset by peer.\n ---\u003E System.Net.Sockets.SocketException (104): Connection reset by peer\n --- End of inner exception stack trace ---\n at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)\n at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.System.Threading.Tasks.Sources.IValueTaskSource\u003CSystem.Int32\u003E.GetResult(Int16 token)\n at System.Net.Security.SslStream.EnsureFullTlsFrameAsync[TIOAdapter](TIOAdapter adapter)\n at System.Net.Security.SslStream.ReadAsyncInternal[TIOAdapter](TIOAdapter adapter, Memory\u00601 buffer)\n at System.Net.Http.Http2Connection.ProcessIncomingFramesAsync()\n --- End of inner exception stack trace ---\n at System.Net.Http.Http2Connection.ThrowRequestAborted(Exception innerException)\n at System.Net.Http.Http2Connection.Http2Stream.CheckResponseBodyState()\n at System.Net.Http.Http2Connection.Http2Stream.TryEnsureHeaders()\n at System.Net.Http.Http2Connection.Http2Stream.ReadResponseHeadersAsync(CancellationToken cancellationToken)\n at System.Net.Http.Http2Connection.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)\n --- End of inner exception stack trace ---\n at System.Net.Http.Http2Connection.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)\n at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)\n at System.Net.Http.AuthenticationHelper.SendWithAuthAsync(HttpRequestMessage request, Uri authUri, Boolean async, ICredentials credentials, Boolean preAuthenticate, Boolean isProxyAuth, Boolean doRequestAuth, HttpConnectionPool pool, CancellationToken cancellationToken)\n at System.Net.Http.DiagnosticsHandler.SendAsyncCore(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)\n at System.Net.Http.DecompressionHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)\n at System.Net.Http.HttpClient.\u003CSendAsync\u003Eg__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)\n at NzbDrone.Common.Http.Dispatchers.ManagedHttpDispatcher.GetResponseAsync(HttpRequest request, CookieContainer cookies) in ./Sonarr.Common/Http/Dispatchers/ManagedHttpDispatcher.cs:line 115\n at NzbDrone.Common.Http.HttpClient.ExecuteRequestAsync(HttpRequest request, CookieContainer cookieContainer) in ./Sonarr.Common/Http/HttpClient.cs:line 157\n at NzbDrone.Common.Http.HttpClient.ExecuteAsync(HttpRequest request) in ./Sonarr.Common/Http/HttpClient.cs:line 70\n at NzbDrone.Common.Http.HttpClient.GetAsync[T](HttpRequest request) in ./Sonarr.Common/Http/HttpClient.cs:line 336\n at NzbDrone.Common.Http.HttpClient.Get[T](HttpRequest request)\n at NzbDrone.Core.MetadataSource.SkyHook.SkyHookProxy.GetSeriesInfo(Int32 tvdbSeriesId) in ./Sonarr.Core/MetadataSource/SkyHook/SkyHookProxy.cs:line 62\n at NzbDrone.Core.MetadataSource.SkyHook.SkyHookProxy.SearchForNewSeries(String title) in ./Sonarr.Core/MetadataSource/SkyHook/SkyHookProxy.cs:line 160\n --- End of inner exception stack trace ---\n at NzbDrone.Core.MetadataSource.SkyHook.SkyHookProxy.SearchForNewSeries(String title) in ./Sonarr.Core/MetadataSource/SkyHook/SkyHookProxy.cs:line 160\n at lambda_method132(Closure , Object , Object[] )\n at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.SyncObjectResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)\n at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeActionMethodAsync()\n at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State\u0026 next, Scope\u0026 scope, Object\u0026 state, Boolean\u0026 isCompleted)\n at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeNextActionFilterAsync()\n--- End of stack trace from previous location ---\n at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)\n at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State\u0026 next, Scope\u0026 scope, Object\u0026 state, Boolean\u0026 isCompleted)\n at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()\n--- End of stack trace from previous location ---\n at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.\u003CInvokeFilterPipelineAsync\u003Eg__Awaited|20_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\n at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.\u003CInvokeAsync\u003Eg__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)\n at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.\u003CInvokeAsync\u003Eg__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)\n at Microsoft.AspNetCore.Routing.EndpointMiddleware.\u003CInvoke\u003Eg__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)\n at Sonarr.Http.Middleware.BufferingMiddleware.InvokeAsync(HttpContext context) in ./Sonarr.Http/Middleware/BufferingMiddleware.cs:line 28\n at Sonarr.Http.Middleware.IfModifiedMiddleware.InvokeAsync(HttpContext context) in ./Sonarr.Http/Middleware/IfModifiedMiddleware.cs:line 41\n at Sonarr.Http.Middleware.CacheHeaderMiddleware.InvokeAsync(HttpContext context) in ./Sonarr.Http/Middleware/CacheHeaderMiddleware.cs:line 33\n at Sonarr.Http.Middleware.StartingUpMiddleware.InvokeAsync(HttpContext context) in ./Sonarr.Http/Middleware/StartingUpMiddleware.cs:line 38\n at Sonarr.Http.Middleware.UrlBaseMiddleware.InvokeAsync(HttpContext context) in ./Sonarr.Http/Middleware/UrlBaseMiddleware.cs:line 27\n at Sonarr.Http.Middleware.VersionMiddleware.InvokeAsync(HttpContext context) in ./Sonarr.Http/Middleware/VersionMiddleware.cs:line 29\n at Microsoft.AspNetCore.Authorization.Policy.AuthorizationMiddlewareResultHandler.HandleAsync(RequestDelegate next, HttpContext context, AuthorizationPolicy policy, PolicyAuthorizationResult authorizeResult)\n at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)\n at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)\n at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.\u003CInvoke\u003Eg__Awaited|6_0(ExceptionHandlerMiddleware middleware, HttpContext context, Task task)" } System.Exception: SonarrSeriesLookupByTvDbId failed: Service Unavailable - { "message": "Search for \u0027tvdb:373522\u0027 failed. Invalid response received from SkyHook.", �� "description": "NzbDrone.Core.MetadataSource.SkyHook.SkyHookException: Search for \u0027tvdb:373522\u0027 failed. Invalid response received from SkyHook.\n ---\u003E System.Net.Http.HttpRequestException: An error occurred while sending the request.\n ---\u003E System.IO.IOException: The request was aborted.\n ---\u003E System.IO.IOException: Unable to read data from the transport connection: Connection reset by peer.\n ---\u003E System.Net.Sockets.SocketException (104): Connection reset by peer\n --- End of inner exception stack trace ---\n at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)\n at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.System.Threading.Tasks.Sources.IValueTaskSource\u003CSystem.Int32\u003E.GetResult(Int16 token)\n at System.Net.Security.SslStream.EnsureFullTlsFrameAsync[TIOAdapter](TIOAdapter adapter)\n at System.Net.Security.SslStream.ReadAsyncInternal[TIOAdapter](TIOAdapter adapter, Memory\u00601 buffer)\n at System.Net.Http.Http2Connection.ProcessIncomingFramesAsync()\n --- End of inner exception stack trace ---\n at System.Net.Http.Http2Connection.ThrowRequestAborted(Exception innerException)\n at System.Net.Http.Http2Connection.Http2Stream.CheckResponseBodyState()\n at System.Net.Http.Http2Connection.Http2Stream.TryEnsureHeaders()\n at System.Net.Http.Http2Connection.Http2Stream.ReadResponseHeadersAsync(CancellationToken cancellationToken)\n at System.Net.Http.Http2Connection.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)\n --- End of inner exception stack trace ---\n at System.Net.Http.Http2Connection.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)\n at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)\n at System.Net.Http.AuthenticationHelper.SendWithAuthAsync(HttpRequestMessage request, Uri authUri, Boolean async, ICredentials credentials, Boolean preAuthenticate, Boolean isProxyAuth, Boolean doRequestAuth, HttpConnectionPool pool, CancellationToken cancellationToken)\n at System.Net.Http.DiagnosticsHandler.SendAsyncCore(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)\n at System.Net.Http.DecompressionHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)\n at System.Net.Http.HttpClient.\u003CSendAsync\u003Eg__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)\n at NzbDrone.Common.Http.Dispatchers.ManagedHttpDispatcher.GetResponseAsync(HttpRequest request, CookieContainer cookies) in ./Sonarr.Common/Http/Dispatchers/ManagedHttpDispatcher.cs:line 115\n at NzbDrone.Common.Http.HttpClient.ExecuteRequestAsync(HttpRequest request, CookieContainer cookieContainer) in ./Sonarr.Common/Http/HttpClient.cs:line 157\n at NzbDrone.Common.Http.HttpClient.ExecuteAsync(HttpRequest request) in ./Sonarr.Common/Http/HttpClient.cs:line 70\n at NzbDrone.Common.Http.HttpClient.GetAsync[T](HttpRequest request) in ./Sonarr.Common/Http/HttpClient.cs:line 336\n at NzbDrone.Common.Http.HttpClient.Get[T](HttpRequest request)\n at NzbDrone.Core.MetadataSource.SkyHook.SkyHookProxy.GetSeriesInfo(Int32 tvdbSeriesId) in ./Sonarr.Core/MetadataSource/SkyHook/SkyHookProxy.cs:line 62\n at NzbDrone.Core.MetadataSource.SkyHook.SkyHookProxy.SearchForNewSeries(String title) in ./Sonarr.Core/MetadataSource/SkyHook/SkyHookProxy.cs:line 160\n --- End of inner exception stack trace ---\n at NzbDrone.Core.MetadataSource.SkyHook.SkyHookProxy.SearchForNewSeries(String title) in ./Sonarr.Core/MetadataSource/SkyHook/SkyHookProxy.cs:line 160\n at lambda_method132(Closure , Object , Object[] )\n at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.SyncObjectResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)\n at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeActionMethodAsync()\n at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State\u0026 next, Scope\u0026 scope, Object\u0026 state, Boolean\u0026 isCompleted)\n at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeNextActionFilterAsync()\n--- End of stack trace from previous location ---\n at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)\n at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State\u0026 next, Scope\u0026 scope, Object\u0026 state, Boolean\u0026 isCompleted)\n at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()\n--- End of stack trace from previous location ---\n at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.\u003CInvokeFilterPipelineAsync\u003Eg__Awaited|20_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\n at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.\u003CInvokeAsync\u003Eg__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)\n at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.\u003CInvokeAsync\u003Eg__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)\n at Microsoft.AspNetCore.Routing.EndpointMiddleware.\u003CInvoke\u003Eg__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)\n at Sonarr.Http.Middleware.BufferingMiddleware.InvokeAsync(HttpContext context) in ./Sonarr.Http/Middleware/BufferingMiddleware.cs:line 28\n at Sonarr.Http.Middleware.IfModifiedMiddleware.InvokeAsync(HttpContext context) in ./Sonarr.Http/Middleware/IfModifiedMiddleware.cs:line 41\n at Sonarr.Http.Middleware.CacheHeaderMiddleware.InvokeAsync(HttpContext context) in ./Sonarr.Http/Middleware/CacheHeaderMiddleware.cs:line 33\n at Sonarr.Http.Middleware.StartingUpMiddleware.InvokeAsync(HttpContext context) in ./Sonarr.Http/Middleware/StartingUpMiddleware.cs:line 38\n at Sonarr.Http.Middleware.UrlBaseMiddleware.InvokeAsync(HttpContext context) in ./Sonarr.Http/Middleware/UrlBaseMiddleware.cs:line 27\n at Sonarr.Http.Middleware.VersionMiddleware.InvokeAsync(HttpContext context) in ./Sonarr.Http/Middleware/VersionMiddleware.cs:line 29\n at Microsoft.AspNetCore.Authorization.Policy.AuthorizationMiddlewareResultHandler.HandleAsync(RequestDelegate next, HttpContext context, AuthorizationPolicy policy, PolicyAuthorizationResult authorizeResult)\n at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)\n at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)\n at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.\u003CInvoke\u003Eg__Awaited|6_0(ExceptionHandlerMiddleware middleware, HttpContext context, Task task)" } at Requestrr.WebApi.Extensions.HttpResponseMessageExtensions.ThrowIfNotSuccessfulAsync(HttpResponseMessage responseMessage, String message, Func2 getErrorFunc) in D:\Users\thoms\Documents\GitHub\requestrr\Requestrr.WebApi\Extensions\HttpResponseMessageExtensions.cs:line 35
at Requestrr.WebApi.RequestrrBot.DownloadClients.Sonarr.SonarrClientV3.SearchSerieByTvDbIdAsync(Int32 tvDbId) in D:\Users\thoms\Documents\GitHub\requestrr\Requestrr.WebApi\RequestrrBot\DownloadClients\Sonarr\SonarrClientV3.cs:line 490
at Requestrr.WebApi.RequestrrBot.DownloadClients.Sonarr.SonarrClientV3.FindSeriesInSonarrAsync(Int32 tvDbId) in D:\Users\thoms\Documents\GitHub\requestrr\Requestrr.WebApi\RequestrrBot\DownloadClients\Sonarr\SonarrClientV3.cs:line 480
at Requestrr.WebApi.RequestrrBot.DownloadClients.Sonarr.SonarrClientV3.GetTvShowDetailsAsync(HashSet1 theTvDbIds, CancellationToken token) in D:\Users\thoms\Documents\GitHub\requestrr\Requestrr.WebApi\RequestrrBot\DownloadClients\Sonarr\SonarrClientV3.cs:line 242

Error while getting movie details from TheMovieDb

Been using this for of Requestrr for quite a while (since darkalfx) with no issue, been seeing this for the past week or so but been to busy to look into it

Exception:

Requestrr.WebApi.RequestrrBot.DownloadClients.Radarr.RadarrClient[0]
      Error while getting movie details from TheMovieDb: The request was canceled due to the configured HttpClient.Timeout of 100 seconds elapsing.

at Requestrr.WebApi.RequestrrBot.DownloadClients.TheMovieDb.HttpGetAsync(HttpClient client, String url) in D:\Users\thoms\Documents\GitHub\requestrr\Requestrr.WebApi\RequestrrBot\DownloadClients\TheMovieDb.cs:line 63
         at Requestrr.WebApi.RequestrrBot.DownloadClients.TheMovieDb.GetMovieDetailsAsync(HttpClient client, String theMovieDbId, ILogger logger) in D:\Users\thoms\Documents\GitHub\requestrr\Requestrr.WebApi\RequestrrBot\DownloadClients\TheMovieDb.cs:line 25

Able to send a command from Discord, and get a list of movies, but when selecting a title, the movie does not return for 100 seconds. After that it loads fine. API key seems to be fine.

Set logging to informational and copy out the TMDB API requests and they are all loading immediately in the browser.

I have checked the code and confirmed that the line 25 API call is the Movie Release Dates, which is the API endpoint from the logs. I see there is an error handler that looks like it is not being hit as there is no message just an exception.

Currently setting up all the dev tools on my personal laptop to check it out cos everything is on the work one.

FR-Add trending or discovery option

Sometimes people want some trending or discover some shows/movies that are not currently on the media server and people would want it. This would pull back some options for the user to then request.

[Feature Request] Add Slack as a Chat client option

It looks like this project was specifically created for use with Discord bots. Are there plans in the future to add other chat clients as options? Slack has a similar bot system and slash command flow as Discord and I think it would be a good secondary option for users to be able to configure.

I'd be willing to help with contributing to adding slack if you think it would be a good fit. Thanks for your consideration!

"An unexpected error occurred while trying to process your request" - on tv requesting via sonarr

I got this error after searching choosing and requesting tv show:
"An unexpected error occurred while trying to process your request"

I search the tv show eith no problem, i choose it and when i hit request it sends an error.

I've checked sonarr setings. The connection test passes, the base url is empty on both sides, thera are no roles in the bot settings.

Movie requesting works fine via radarr

docker compose/cli

hey, i use CasaOs on a raspberry pi and on the "Docker CLI" area i typed
"docker run -d
--name requestrr
-p 4545:4545
-v path to config:/root/config
--restart=unless-stopped
thomst08/requestrr" and i got this screen:
image
but i cant install it anyway. i also typed docker pull thomst08/requestrr to pull the image but, for some reason it still did not show up on casaos. Is it possible to have a different CLI ??

Unable to connect from https

Hey,

I have a box set up. I can only access it through https, which I have set up on a nginx server, that just forwards traffic.
It does so normally to all my services except requestrr. It displays a blank page and this message in the docker logs:
Failed to determine the https port for redirect.

Any ideas?

Adding a tag clears out the Path

This happens for the Movie section, I didn't test it in others. This seems to be a visual bug and doesn't actually affect anything.
image

Executing Requestrr.Webapi results in chmod +x ./dotnet-install.sh on Debian 12

Hi,

Followed setup instructions as per the wiki, extracting tarball, installed .NET Runtime 8.0.1, but when I try to execute the Requestrr.WebAPI, I get
-bash: ./Requestrr.WebApi: cannot execute binary file: Exec format error

I tried chmod u+x Requestrr.WebApi but to no avail. I used the tar ball so I'd expect folder and file permissions to be fine, and I tried installing .NET SDK and the runtime stand alone, both using Microsoft's dotnet install script as well as apt packages.

Not sure if I am missing something from the installation or this is an issue in Debian 12.

OS Info:
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)" NAME="Debian GNU/Linux" VERSION_ID="12" VERSION="12 (bookworm)" VERSION_CODENAME=bookworm ID=debian HOME_URL="https://www.debian.org/" SUPPORT_URL="https://www.debian.org/support" BUG_REPORT_URL="https://bugs.debian.org/"
This is being virtualized through a LXC container on Proxmox, but don't believe that should be of any significance.

Requestrr doesn't update - UNRAID

If your Requestrr doesn't automatically find the new update from the repo here is how to fix it.

Open the Docker for Requestrr and verify you are using the new repo location.

image

Go back to the Docker tab in UNRAID and click "Check for Updates"

It should then search the new repo for the latest update and it will be ready to install.

image

Install the latest update and you're good to go!

stuck at Sending...

hey, im not being able to request any movie or tv show because the bot just gets stuck at "Sending.....".
image
is it possible that the problem is that i downloaded it from a casaOS AppStore??

Extracting files is mangled

Hello-

I know that this is an easy fix for a decently experienced end user but I was slightly annoyed when I extracted the files for this new fork and the hacks are meant to be slashes.

Screenshot_20240121_091406

Thanks.

Bad request: 400, random failure with message of "Sending.....

Randomly, some users are getting what appears to be a time out. Is there any more debugging I can enable?

On discord, requestrr just says "Sending....."

In the logs, it shows:

fail: Requestrr.WebApi.RequestrrBot.ChatBot[0]
Error while searching movies with title the marvels : Bad request: 400
DSharpPlus.Exceptions.BadRequestException: Bad request: 400
at DSharpPlus.Net.DiscordApiClient.EditWebhookMessageAsync(UInt64 webhook_id, String webhook_token, String message_id, DiscordWebhookBuilder builder, IEnumerable1 attachments) at DSharpPlus.Entities.DiscordInteraction.EditOriginalResponseAsync(DiscordWebhookBuilder builder, IEnumerable1 attachments)
at Requestrr.WebApi.RequestrrBot.ChatClients.Discord.DiscordMovieUserInterface.MovieSelection(String customId, MovieRequest request, IReadOnlyList1 movies) in D:\Dev\Requestrr\requestrr\Requestrr.WebApi\RequestrrBot\ChatClients\Discord\DiscordMovieUserInterface.cs:line 46 at Requestrr.WebApi.RequestrrBot.ChatClients.Discord.DiscordMovieUserInterface.ShowMovieSelection(MovieRequest request, IReadOnlyList1 movies) in D:\Dev\Requestrr\requestrr\Requestrr.WebApi\RequestrrBot\ChatClients\Discord\DiscordMovieUserInterface.cs:line 31
at Requestrr.WebApi.RequestrrBot.Movies.MovieRequestingWorkflow.SearchMovieAsync(String movieName) in D:\Dev\Requestrr\requestrr\Requestrr.WebApi\RequestrrBot\Movies\MovieRequestingWorkflow.cs:line 49
at Requestrr.WebApi.RequestrrBot.SlashCommands.RequestGroup.MovieByTitle0(InteractionContext ctx, String movieTitle)

[Feature Request] Add "Force Search" option for shows/movies that exist

When a show already exists, and a season is either unmonitored, or monitored, and you request that season, requestrr will either respond saying the season already exists, or flip it to monitored, but as far as I can tell, in either case, it will not force a search. Would be nice to have an option to force search on movie/show requests even if said show/movie already exists. This is especially more helpful if requestrr is configured to only allow one season request at a time. The first season requested, if the show doesn't exist, will search. If subsequent seasons are requested, it just flips to monitored, but won't search.

Appreciate the consideration.

Request Function Not Executing

Requestrr has worked very well for the several months that I've had it. Within the past week, the request function has stopped working.

When I type in a general movie title, the list appears as it would normally, however after the specific movie is clicked the request button and moviedb info do not appear.

If I type in a specific movie name, it pulls the moviedb information with a request button however nothing happens after pressing the request button.

Any help would be very much appreciated!

[Feature Request] - Petio API integration

I know this is a long shot but figured it can't hurt to ask :)

Petio is similar to Overseer and Ombi but as with anything, it has its own set of benefits. Particularly, a robust filtering feature set. E.g. you can create a set of rules such as -
If Movie is not english and if Movie was made before 1980 then add to Radarr in root /mnt/media/foreign-archive with quality profile foreign and with tag foreign-archive. etc.

So it allows admins to sort of force requests to go into the correct categories vs relying on users to use the correct categories, if that makes sense. Requestrr would be an awesome bridge between Petio and discord IMO.

It also allows for individual "users" settings such as automatic approval, manual approval, # of requests, etc. For Requestrr, the "user" would be the bot. e.g. make a quarantine requestrr and a full access requestrr, then assign channel permissions accordingly to various members would have different rights if that makes sense.

I could have sworn they had API documentation published but I can't find it at the moment to link it here, but I did ask in their discussion area of github - petio-team/petio#856

Thanks for the consideration.

Settings not saving through update

For my TrueNAS installation, for the last 2 years each time I update the app, all the settings for connecting to discord and the series/movie categories are reset.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.