Comments (100)
I'm going to do a few last tests with the direct api then publish the release!
from doplarr.
Overseerr looks like the most popular choice of them all. The developers are super responsive and their app is very fast and very pretty.
If anything you could deploy multiple Doplarr
bots with different profiles configured to each one.
from doplarr.
@vp-en I found the bug that was causing the those issues, I forgot to pass in the bool that checks if the request was 4K. I also overhauled the response messages for the different media states. I'm finishing up these patches, I basically rewrote all the interaction flow control so now there is a single state machine that controls it, making the whole thing easier to modify instead of a ton of nested ifs.
from doplarr.
I vote for Overseerr Support as well. Their API structure is well built, at least thats what I gathered from talking with the requestrr and lunasea devs.
from doplarr.
Made a lot of progress today, requesting movies basically works:
You get an error message in discord for quota limits
And an error for missing associated account
I think I prefer this - requiring you have a mapping from user in overseerr to discord rather than having a default, but let me know what you think.
from doplarr.
I like your approach on this!
My Overseerr users that are on my Discord Server all have their respective Discord ID mapped. So I am well prepared
Which profile do you use when you send the request to Overseerr? Do you take the default one for movies/shows that is configured in Overseerr? Or does the user need to choose it when I have multiple?
My preference would just be default profile.
from doplarr.
I was able to get this working and tested against adding a movie and tv show
from doplarr.
I'm not sure you need to - the issue lies in this part of the code
Doplarr/src/doplarr/overseerr.clj
Lines 28 to 32 in 5c68b56
It uses the API call GET from /user
, but by default that only gets the first 10 users.. So the issue will only appear if you have more than 10 users, and if the user in question will be the 11th (or later) user.
By forcing it to get more users, like /user?take=1000
, it'll actually work as intended
So it works if you edit that line, and (re)compile it. So I think it's up to @kiranshila to fix it
But thanks anyways
from doplarr.
Great! I'm going to work on the backlog of a few of these easier bugs/enhancements first, then I'll dive into this.
from doplarr.
Also, here's a link to their API docs https://api-docs.overseerr.dev/
from doplarr.
Yeah, +
is correct, Java isn't wrong lol, its a bug in Overseerr. I have a fix in place rn, it's just annoying haha
from doplarr.
It would be nice if checked for permission(s) as well, and reported back to the user if they don't have permission. E.g. to the profiles associated with the 4K Sonarr / Radarr instances.
from doplarr.
It would be nice if checked for permission(s) as well, and reported back to the user if they don't have permission. E.g. to the profiles associated with the 4K Sonarr / Radarr instances.
What permissions are you referring to? Just 4K vs non-4K, or quota limits, or other stuff. I'm still trying to think of a nice way to do the 4K split, but it looks like that requires having two different servers up, it can't just use a different profile afaik.
Exactly what I'm referring to (the 4K vs the non-4K permissions)
To use 4K instances in Overseerr, you'll need separate Radarr / Sonarr instances for that.
So, in Overseerr, it's usually setup (if you want to use 4K instances) like so:
1x Radarr for non-4K movie content
1x Sonarr for non-4K TV content
1x Radarr for 4K movie content
1x Sonarr for 4K TV content
All instances are separate and doesn't share profiles.
In my case, I've just named the non-4K Radarr/Sonarr profiles to "HD-1080p" and the 4K Radarr/Sonarr profiles to "UHD-4K". So they do have different profile names, not sure if that matters at all.
E.g.
https://i.imgur.com/79ymn1c.png
from doplarr.
Got it. Yeah, I'll need to chew on that a bit - I'll probably do it like the drop down for profile select, but I have to find which API endpoint lets me check if a user has permission for that.
from doplarr.
just for clarification, i meant the overseer profiles as well, @vp-en did a better job describing it :)
from doplarr.
Sorry I've been quiet on this - got a ton of school stuff to catch up on. I'll finish this up soon.
from doplarr.
I'm wondering how I can limit the bot to only work in a specific channel though. Do you have any thoughts on this/ideas?
It's not possible with the current slash command API, that's why we need the role.
from doplarr.
Ah shit mate, I think I figured it out
I took my friends ID and put it into the admin account of Overseerr (marked as Owner in Overseerr) - and then it worked.
So I think there's something going on there
from doplarr.
Clojure code looks strange to me lol. But to clarify, the bot only seems to allow the ID/Discord-user associated with the owner account of the Overseerr instance if that makes sense.
from doplarr.
Alright here is my solution, ping the endpoint once to find number of ids, then get all of them. That's the only way without having a magic maximum users number
(defn num-users []
(a/go
(->> (a/<! (GET "/user" {:query-params {:take 1}}))
(then #(s/select-one [:body :pageInfo :results] %))
(else utils/fatal-error))))
(defn all-users []
(a/go
(->> (a/<! (GET "/user" {:query-params {:take (a/<! (num-users))}}))
(then #(->> (s/select-one [:body :results] %)
(map :id)
(into [])))
(else utils/fatal-error))))
from doplarr.
I'll test in a short while
Edit: Sorry don't have time for much more than this
What works:
- Requesting a movie now works properly, even for the 66th user
👍 - Requesting a movie that's already on Plex gives the
This has already been requested
message -- would be nice if this message was different - likeThis movie is already on Plex
- Requesting a movie that's already been requested gives the
This has already been requested
message - It's possible to request in 4K, IF the movie is not present in Plex already. So if it's a totally "new" movie, it'll go through no problems.
Issues:
- If the movie is already present in Plex, it'll give the
This has already been requested
message, if you request it in 4K.. Even if it's not been requested in 4K in Overseerr. If you check manually on the website, you'll see it's not been requested in 4K.
from doplarr.
Very helpful! Thank you!
Yeah the requested deal has a few more states that I missed. I also noticed that things currently downloading also show up as un-requested.
from doplarr.
@vp-en Found the bugs, should be squashed now
from doplarr.
I'm surprised Overseerr doesn't throw an error when requesting partial seasons
Yeah kinda thought that would happen as well. Tested it, just in case lol
Also, not sure if this is relevant and/or avoidable, but the docker instance crashes when a user inputs a imdb url..
I'm guessing it crashes when other urls are put in.. Haven't tested it that much, just did it by accident
from doplarr.
Alright @vp-en I think I got that sorted. How many bugs could there possibly be haha
from doplarr.
Ah alright :D Then I think it works. I'll do a movie test in a few minutes, and update this post
Movie requests also work. So I guess it's all good, atleast from my short amount of testing
from doplarr.
So not sure what I did wrong when trying it out but I don't see any slash commands not even greyed out stuff either. Bot is online but not seeing commands nor is it responding to any commands, I'm using it in container with docker.
from doplarr.
Yeah I missed the part about OAuth my bad. Ahaha
Sorry about that.
I went through the steps of adding the bot via permissions and such and like didn't even notice I was supposed to do it via OAuth flow part.
from doplarr.
Hey mate, not sure if this is in the scope of your Doplarr bot... But!
Overseerr has native support for separate 4K Radarr/Sonarr servers.. Overseerr also manages user permissions, like who can request 4K, who can't, who can request "normal" content, and who can't .. and so on.
It would be nice to have separate commands for the separate 4K Radarr/Sonarr servers, which are configured through Overseerr. So commands like /4kmovie
and /4ktv
to request through Overseerr, specifically using the separate 4K Radarr/Sonarr servers.
I made a similair request on the requestrr repo.
from doplarr.
So, the tricky bit is that it's a slippery slope, once we add separate commands for individual profiles, we'd have to keep doing that for all potential profiles, which doesn't scale. The profile selection would happen inside the single \request
interaction. I'm going to track that feature in #14.
So - we would need to connect the discord user to the overserr user and then add a separate interaction screen for profile selection that filters by what that user is able to request.
The reason we would do this inside the interaction is because it would be a hot mess to try to connect the overserr permissions to discord permission as the permissions structuring for the slash commands is a nightmare.
I haven't used either ombi or overseerr, nor do I personally plan to, so I have to look more into how it all works.
There seem to be even more options than those two as well, I saw Conreq and Cheddarr just to name a few. The more APIs we add, the more difficult managing them all become, so I think I might just pick one for the time being.
From a cursory look, I think I will go with Overseerr. Of the people following this issue, are there any thoughts on this?
from doplarr.
@kiranshila thanks, looking forward to it!
from doplarr.
I've been reading the overseer docs, seems straightforward. The fact that users can "just have" a discord id as part of their metadata makes this pretty easy. I'm going to need to do some checks to make sure that if we are using overseer, validate that the user can perform the request and if not, return a permission error dialog.
from doplarr.
i am running overseerr and am willing to test anything you need tested in that regard!
from doplarr.
@kiranshila if you are open to pull requests, I'd love to help implement this feature (I do have a background in using Clojure)
from doplarr.
@ahkamyaqeen Yeah, if you'd like - I was going to tackle it this weekend, though.
from doplarr.
Started today - the api is actually a little wonky, not using the modern query params spec, which is throwing errors for search terms with spaces as the Java 11 URLEncoder encodes spaces as +
.
I opened an issue here sct/overseerr#2010
from doplarr.
@kiranshila there's a interesting stackoverflow about that issue. Seems pretty lengthy, maybe there's a workaround for now?
https://stackoverflow.com/questions/4737841/urlencoder-not-able-to-translate-space-character
from doplarr.
Oh definitely a Bug on their end, I'm just mentioning you can likely workaround it for now until it's fixed by them upstream. The first answer in the stackoverflow seemed like it would do.
/ignore me, didn't read you put a work around in already lol
from doplarr.
The specific HTTP wrapper I am using does a URI encode before it submits the request anyway, so I am manually creating the query param string instead of the nice {:query-params ...
construct. URI encoding puts spaces to %20
, so it works out.
from doplarr.
I like your approach on this!
My Overseerr users that are on my Discord Server all have their respective Discord ID mapped. So I am well prepared smileWhich profile do you use when you send the request to Overseerr? Do you take the default one for movies/shows that is configured in Overseerr? Or does the user need to choose it when I have multiple?
My preference would just be default profile.
As far as I can tell, I can't actually select the profile for the requests via the API, so it will always use whatever is setup in Overseerr
from doplarr.
It would be nice if checked for permission(s) as well, and reported back to the user if they don't have permission. E.g. to the profiles associated with the 4K Sonarr / Radarr instances.
What permissions are you referring to? Just 4K vs non-4K, or quota limits, or other stuff. I'm still trying to think of a nice way to do the 4K split, but it looks like that requires having two different servers up, it can't just use a different profile afaik.
from doplarr.
Hey @kiranshila, I'm not sure how far you are with this, but I got to think
Is it possible to add an (optional) option for Doplarr to request content on both profiles (regular + 4K)?
E.g.. If one user tries to request a Movie in 4K, that it also sends the same request (same movie) to the regular sonarr/radarr as well.
Not sure if "options" are a part of Doplarr, so forgive me if this should be a in a separate GH issue.
from doplarr.
Ok I think I got it all working - if someone with an overseerr setup wants to try it out, check out the ghcr.io/kiranshila/doplarr:overseerr
docker image
from doplarr.
If y'all don't find any major problems, I'm ready for the release
from doplarr.
@kiranshila it would be good to know what environment variables to set :) But go ahead and merge it. I'm sure there will be feedback after you release it.
from doplarr.
Oh sorry, it's in the readme in this branch. You just set overseerr_url and overseerr_api, just like radarr and sonarr
from doplarr.
I tried it and movies and tv shows work as expected.
Anime shows can't be requested, at least thats the conclusion i have come to.
Also requesting something thats already available gives the user no feedback and doesn't close the request.
from doplarr.
To clarify on animes:
I am able to click request and get the response has been requested, but the actual request doesnt go through
from doplarr.
I'm quite busy today, so I'll only be able to test it tomorrow
Edit Sorry probably won't be able to test it today either
from doplarr.
Also requesting something thats already available gives the user no feedback and doesn't close the request.
Ah yes - forgot about that.
I am able to click request and get the response has been requested, but the actual request doesnt go through
I am unable to reproduce this. Is there any error in the log? Is your anime setup somehow different?
from doplarr.
I didn't see any errors in doplarr or overseerr logs unfortunately.
I don't think my anime setup is different. Both tv shows and anime are defined in the default profile for sonarr and differ only in root folder and tags.
from doplarr.
Okay so I tried a bit more and was partially successful.
I did manage to request the anime shows i couldn't request before.
And I think I know the problem.
I can only request them if choose a specific season. If i choose all seasons the request doesnt go through.
from doplarr.
When you say it doesn't go through - like the request isn't showing up at all in Overseerr?
from doplarr.
Correct, it never reaches Overseerr.
Not even in the overseerr logs.
from doplarr.
I think after I fix whatever is happening with @cpt-kuesel's anime and add a duplicate request message, we should be good to go
from doplarr.
I'm probably just an idiot, but I followed the guide quite closely, added the bot..
docker run \
-e OVERSEERR_URL='https://overseerr.xxxx.com' \
-e OVERSEERR_API='xxxxxxxxxxxxxxxxxxxxxxxxx=' \
-e BOT_TOKEN='xxxxxxxxxxxxxxxxxxxxxxxx' \
-e ROLE_ID='xxxxxxxxxxxxxxxxxxxxxxxx' \
--name doplarr ghcr.io/kiranshila/doplarr:overseerr
Getting this from the docker logs:
19:05:38,774 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
19:05:38,774 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
19:05:38,774 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [jar:file:/app/target/Doplarr.jar!/logback.xml]
19:05:38,778 |-INFO in ch.qos.logback.core.joran.spi.ConfigurationWatchList@b0e5507 - URL [jar:file:/app/target/Doplarr.jar!/logback.xml] is not of type file
19:05:38,828 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - debug attribute not set
19:05:38,828 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
19:05:38,830 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [CONSOLE]
19:05:38,863 |-WARN in ch.qos.logback.core.ConsoleAppender[CONSOLE] - This appender no longer admits a layout as a sub-component, set an encoder instead.
19:05:38,863 |-WARN in ch.qos.logback.core.ConsoleAppender[CONSOLE] - To ensure compatibility, wrapping your layout in LayoutWrappingEncoder.
19:05:38,863 |-WARN in ch.qos.logback.core.ConsoleAppender[CONSOLE] - See also http://logback.qos.ch/codes.html#layoutInsteadOfEncoder for details
19:05:38,864 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to ERROR
19:05:38,864 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [CONSOLE] to Logger[ROOT]
19:05:38,864 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.
19:05:38,864 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@6bbe50c9 - Registering current configuration as safe fallback point
Assuming this is alright, since the bot is showing it's online.
but I have a problem - the /request
options are greyed out. I double checked the permissions given to the assigned role..
The "Use Application Commands" is set to enabled both in the role and in the channel I'm trying to use..
NEVERMIND.. Forgot to read this part lol:
Every user that you wish to have access to the slash commands needs to be
assigned this role (even the server owner/admins).
from doplarr.
@vp-en Yeah, I should probably bold that or something - that seems to be the most common thing people are missing. This is an artifact of the discord slash command permissions nonsense, there isn't really a way around it.
from doplarr.
@vp-en Yeah, I should probably bold that or something - that seems to be the most common thing people are missing. This is an artifact of the discord slash command permissions nonsense, there isn't really a way around it.
Slightly annoying, but that's not your fault
The requesting works very good though. Again, as you already mentioned, it would be awesome with both a "this is already on Plex", if Overseerr knows it's already on Plex, or "this has already been requested" if Overseerr already knows it has been requested, and so on.
Thanks a lot for your work on this
from doplarr.
Slightly annoying, but that's not your fault smile I guess I'll create some trash role for the sole purpose of the bot +1
An alternative idea would be to make the role bit optional, if you want everyone on the server to have access to it, then we could just not use a role at all. Those are the two options the discord API has, all or nothing.
from doplarr.
I think assigning it to a certain part (certain group of people) of my Discord is sufficient in my case.
I'm wondering how I can limit the bot to only work in a specific channel though. Do you have any thoughts on this/ideas?
from doplarr.
I'm wondering how I can limit the bot to only work in a specific channel though. Do you have any thoughts on this/ideas?
It's not possible with the current slash command API, that's why we need the role.
I see, thanks again mate. You're a legend.
from doplarr.
Sorry to spam up this issue.. but I have this one user on Discord I tried to test this with.
I copied and added his Discord ID to his Plex profile on Overseerr, but when he's trying to request, he gets the You do not have an associated account on Overseerr
message.
It works on my own user, and I just copied my own ID into my Plex profile Overseerr.
from doplarr.
Ooo interesting - I suppose I should try to add more than one user to my test setup here haha
from doplarr.
Edit: The user in question
https://i.imgur.com/fRBQRvJ.png
from doplarr.
...uhhh haha. I'll take a look. Something is up with
Doplarr/src/doplarr/overseerr.clj
Lines 34 to 46 in 5c68b56
from doplarr.
This seemed a little hacky anyway, but there wasn't an obvious way to connect the overseerr user account to the discord ID
from doplarr.
@vp-en I just tried a Local User and Plex User in overseerr and have not been able to reproduce the issue.
from doplarr.
In my case, both of the users are imported from Plex and not local Overseerr users. Not sure if that makes any difference.
I'll test it a bit later and see if I'm able to reproduce the error over and over and then report back
Would it matter if the OVERSEERR_URL
is set to a remote host? The bot and the Overseerr are not hosted on the same server yet, in my case..
Is there any settings in Overseerr that I've missed? This seems weird.
Edit: I'll try a few different things, see if anything works lol.
-
Tried creating a local user in Overseerr, removed my Discord ID from the Owner profile and put it in the local profile. Same issue,
You do not have an associated account on Overseerr
. So I guess it's not that. -
Tried giving the local user Admin rights (all permissions), didn't work either
-
Only thing that seems to work is if I put the discord ID in the Owner account of the Overseerr..
This is what I've tried:
0) Launch Doplarr bot using:
docker run \
-e OVERSEERR_URL='https://overseerr.urlFromRemoteHost.com' \
-e OVERSEERR_API='OverseerrApiKey=' \
-e BOT_TOKEN='BotTokenFromDiscord' \
-e ROLE_ID='88XX504XXXX89407016' \
--name doplarr ghcr.io/kiranshila/doplarr:overseerr
The ROLE_ID
is the role ID of CDR Bot
in Discord. The CDR Bot
role has no global permissions set, but only enabled a few permissions in one specific channel on Discord.
edited re-producing steps to actually reproduce the error:
-
Create 12 (or more) local profiles in Overseerr, give them these permissions:
https://i.imgur.com/5xtbHVT.png -
Create a new Discord account / Discord user, named
dpzTEST
-
Invite
dpzTEST
user to server -
Assign the same role as the bot (CDR Bot) to
dpzTEST
-
Copy the ID of the user
dpzTEST
to the 12th (or above) local profile created -
Press on save changes
-
Try and request a movie using
/request movie {term}
-
Get the error message:
You do not have an associated account on Overseerr
-
Remove the ID from the 12th (or above) local user, that you put in (from step 5), and press
Save Changes
-
Add the ID from user
dpzTEST
to one of the 9 first users in Overseerr, and pressSave Changes
-
You should now be able to request from the
dpzTEST
user in the Discord channel.
Is there anyone else able to test this? @onedr0p @cpt-kuesel
Bonus Info, cause why not:
The Owner user in Overseerr has this URL:
https://overseerr.urlFromRemoteHost.com/profile/settings/notifications/discord
while the local user has a quite different URL, and also a unique number
https://overseerr.urlFromRemoteHost.com/users/66/settings/notifications/discord
Could that be related to the code bit from #5 (comment) ?
It seems to look for the /user/
part of the URL, and somehow, in my case, it only works with the Owner user, which has no /user/
in the URL
Bonus Info pt2
Visiting:
https://overseerr.urlFromRemoteHost.com/api/v1/user/1
shows the correct discordId
of my personal Discord ID
Visiting:
https://overseerr.urlFromRemoteHost.com/api/v1/user/66
shows the correct discordId
of the dpzTEST
user
Bonus Info pt3
Might be a stupid assumption, but could it be that these lines
Doplarr/src/doplarr/overseerr.clj
Lines 28 to 32 in 5c68b56
tries to get all users, using GET "/user"
- which only gets the first 10 hits/results? The user I'm testing is at the very bottom and only visible if you run
https://overseerr.urlFromRemoteHost.com/api/v1/user?take=100
Bonus Info pt40243938
I think I fixed it, my stupid assumption seems to be somewhat correct
I changed the line
Doplarr/src/doplarr/overseerr.clj
Line 30 in 5c68b56
to
(->> (a/<! (GET "/user?take=1000"))
compiled it, and now the local user now works just fine
Not sure if anyone has over 1000 users in their Overseerr, or if there's a better solution than putting a specific number
from doplarr.
I will try and follow your steps.
But I will probably only have time this evening. Will report back with my findings!
from doplarr.
Awesome detective work @vp-en! Nowhere in the docs could I find that the users endpoint is paged as well. The docs clearly say get "all" users.
Great find. I'll get it fixed.
from doplarr.
Awesome detective work @vp-en! Nowhere in the docs could I find that the users endpoint is paged as well. The docs clearly say get "all" users.
Great find. I'll get it fixed.
Yeah, thanks. Found it by doing the https://overseerr.urlremote.com/api/v1/user
and only saw 10 results. Then it clicked lol.
And thanks to you too :D
Anyways, I'm not sure if I asked this - is there any way for you to implement an option, where IF a user requests some movie/series in 4K, that's not already present in non-4K, it'll request both of them?
e.g. if a user requests "Die Hard" in 4K, and it's not already present on Plex, in either 4K or not, it'll send a request to both "profiles" (4K + Non-4K)?
Edit
Ah wait think I requested it here #5 (comment) . Should I create a separate GitHub issue?
from doplarr.
Yeah I'd say make a separate issue.
@vp-en https://overseerr.urlFromRemoteHost.com/api/v1/user/66 shows the correct discordId of the dpzTEST user
This is genius. Absolutely nowhere in the API docs does it say that the user endpoint returns the discord id. That makes everything so much simpler, I don't have to do this whole get all users thing. https://api-docs.overseerr.dev/#/users/get_user__userId_
It doesn't even mention the settings block.
from doplarr.
Yeah all of that code is now
(defn discord-id [ovsr-id]
(a/go
(->> (a/<! (GET (str "/user/" ovsr-id)))
(then #(s/select-one [:body :settings :discordId] %))
(else utils/fatal-error))))
So much better.
EDIT: Wait I lied. I forgot that at this point we only have the discord id, we don't have an immediate way of mapping from discord id to overseerr id, only the other way
from doplarr.
Lol requestrr does exactly what you proposed @vp-en
from doplarr.
I think that's good
from doplarr.
Alright, give the most recent docker image on this branch a try - should have a message on the thing being requested, and fix the number of users error.
from doplarr.
Sounds awesome
from doplarr.
Ok whenever y'all get a chance, please give the latest build a try
from doplarr.
Finally had a few minutes to test it @kiranshila.
Tried the latest build as of the time of this post:
What works:
- The error messages seem to work now!
- If a movie already exists on Plex, it'll report it correctly:
This is already available!
- If a "regular" request is already registered in Overseerr, it'll correctly report:
This is currently processing and should be available soon.
- If a "4K" request is already registered in Overseerr, it'll correctly report:
This is currently processing and should be available soon.
Issues:
- Requesting a movie (regular profile) that's NOT present on Plex, results in nothing happening.
- Requesting a movie (4K profile) that's NOT present on Plex, results in nothing happening.
- Requesting a movie in 1080p, that's already present in 4K on Plex, results in nothing happening.
- Requesting 4K on a movie that's already present in 1080p on Plex, results in nothing happening. Nothing apparent to see in logs.
- Essentially can't request anything lol
Logs from the docker (nothing interesting I think):
https://0bin.net/paste/amJW0Tvh#1jJLbae8rfAHkdwWldo1xQqtuTR14ZFeNXDtGodjFjd
from doplarr.
Seems to work perfectly now
One issue though.. In Overseerr, there's a setting called Allow Partial Series Requests
.
This bot doesn't really "respect" that choice, since using /request series {term}
will ask what season you want to request, and is able to circumvent this limitation set by the user in Overseerr settings.
It would be nice if the bot would check Overseerr if Allow Partial Series Requests
is enabled or not:
https://i.imgur.com/7O2j0nf.png
If it's enabled, then it should be possible to request individual seasons, and if's it's disabled (not allowed) the only option should be All Seasons
when requesting a series.
from doplarr.
Oh interesting - didn't even know that option existed. Should be easy enough to implement.
from doplarr.
I'm surprised Overseerr doesn't throw an error when requesting partial seasons
from doplarr.
As like a query term?
from doplarr.
Yeah. Ah wait nvm, it doesn't happen anymore lol
from doplarr.
Buh? Was there an error?
from doplarr.
Nah, not even. I must've tried on a previous version, where it happened. Now when I put in a url, nothing seems to happen, other than a "no results" message. My mistake sorry
from doplarr.
also just tested your latest commit, it does seem to register that I've disabled the Allow Partial Series Requests
and now only gives me the choice of All Seasons
I don't think I have anything more to add for now lol, other than my other feature request
Woops, had this happen, requesting a series in 4K
(new series requested first on regular profile - went fine - then tried Request 4K, this came up in the logs)
Exception in thread "async-dispatch-1" java.lang.NullPointerException
at clojure.lang.Numbers.ops(Numbers.java:1068)
at clojure.lang.Numbers.dec(Numbers.java:145)
at doplarr.overseerr$season_status.invokeStatic(overseerr.clj:99)
at doplarr.overseerr$season_status.doInvoke(overseerr.clj:96)
at clojure.lang.RestFn.invoke(RestFn.java:486)
at doplarr.interaction_state_machine$fn__19758$fn__19826$state_machine__ 8301__auto____19833$fn__19835.invoke(interaction_state_machine.clj:108)
at doplarr.interaction_state_machine$fn__19758$fn__19826$state_machine__ 8301__auto____19833.invoke(interaction_state_machine.clj:102)
at clojure.core.async.impl.ioc_macros$run_state_machine.invokeStatic(ioc _macros.clj:978)
at clojure.core.async.impl.ioc_macros$run_state_machine.invoke(ioc_macro s.clj:977)
at clojure.core.async.impl.ioc_macros$run_state_machine_wrapped.invokeSt atic(ioc_macros.clj:982)
at clojure.core.async.impl.ioc_macros$run_state_machine_wrapped.invoke(i oc_macros.clj:980)
at clojure.core.async.impl.ioc_macros$take_BANG_$fn__8319.invoke(ioc_mac ros.clj:991)
at clojure.core.async.impl.channels.ManyToManyChannel$fn__3152$fn__3153. invoke(channels.clj:95)
at clojure.lang.AFn.run(AFn.java:22)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown S ource)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at clojure.core.async.impl.concurrent$counted_thread_factory$reify__3055 $fn__3056.invoke(concurrent.clj:29)
at clojure.lang.AFn.run(AFn.java:22)
at java.base/java.lang.Thread.run(Unknown Source)
Exception in thread "async-dispatch-5" java.lang.NullPointerException
at clojure.lang.Numbers.ops(Numbers.java:1068)
at clojure.lang.Numbers.dec(Numbers.java:145)
at doplarr.overseerr$season_status.invokeStatic(overseerr.clj:99)
at doplarr.overseerr$season_status.doInvoke(overseerr.clj:96)
at clojure.lang.RestFn.invoke(RestFn.java:486)
at doplarr.interaction_state_machine$fn__19758$fn__19826$state_machine__ 8301__auto____19833$fn__19835.invoke(interaction_state_machine.clj:108)
at doplarr.interaction_state_machine$fn__19758$fn__19826$state_machine__ 8301__auto____19833.invoke(interaction_state_machine.clj:102)
at clojure.core.async.impl.ioc_macros$run_state_machine.invokeStatic(ioc _macros.clj:978)
at clojure.core.async.impl.ioc_macros$run_state_machine.invoke(ioc_macro s.clj:977)
at clojure.core.async.impl.ioc_macros$run_state_machine_wrapped.invokeSt atic(ioc_macros.clj:982)
at clojure.core.async.impl.ioc_macros$run_state_machine_wrapped.invoke(i oc_macros.clj:980)
at clojure.core.async.impl.ioc_macros$take_BANG_$fn__8319.invoke(ioc_mac ros.clj:991)
at clojure.core.async.impl.channels.ManyToManyChannel$fn__3152$fn__3153. invoke(channels.clj:95)
at clojure.lang.AFn.run(AFn.java:22)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown S ource)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at clojure.core.async.impl.concurrent$counted_thread_factory$reify__3055 $fn__3056.invoke(concurrent.clj:29)
at clojure.lang.AFn.run(AFn.java:22)
at java.base/java.lang.Thread.run(Unknown Source)
Exception in thread "async-dispatch-3" java.lang.NullPointerException
at clojure.lang.Numbers.ops(Numbers.java:1068)
at clojure.lang.Numbers.dec(Numbers.java:145)
at doplarr.overseerr$season_status.invokeStatic(overseerr.clj:99)
at doplarr.overseerr$season_status.doInvoke(overseerr.clj:96)
at clojure.lang.RestFn.invoke(RestFn.java:486)
at doplarr.interaction_state_machine$fn__19758$fn__19826$state_machine__8301__auto____19833$fn__19835.invoke(interaction_state_machine.clj:108)
at doplarr.interaction_state_machine$fn__19758$fn__19826$state_machine__8301__auto____19833.invoke(interaction_state_machine.clj:102)
at clojure.core.async.impl.ioc_macros$run_state_machine.invokeStatic(ioc_macros.clj:978)
at clojure.core.async.impl.ioc_macros$run_state_machine.invoke(ioc_macros.clj:977)
at clojure.core.async.impl.ioc_macros$run_state_machine_wrapped.invokeStatic(ioc_macros.clj:982)
at clojure.core.async.impl.ioc_macros$run_state_machine_wrapped.invoke(ioc_macros.clj:980)
at clojure.core.async.impl.ioc_macros$take_BANG_$fn__8319.invoke(ioc_macros.clj:991)
at clojure.core.async.impl.channels.ManyToManyChannel$fn__3152$fn__3153.invoke(channels.clj:95)
at clojure.lang.AFn.run(AFn.java:22)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at clojure.core.async.impl.concurrent$counted_thread_factory$reify__3055$fn__3056.invoke(concurrent.clj:29)
at clojure.lang.AFn.run(AFn.java:22)
at java.base/java.lang.Thread.run(Unknown Source)
from doplarr.
Yeah I just have it skip the season selection altogether if that is set.
I broke something in the direct sonarr backend though, I'm going to fix that, go through the tests again to make sure it's all still working, then publish.
from doplarr.
Alright @vp-en I fixed that NPE
from doplarr.
Hey @kiranshila
Tried the latest commit as of this post
Tried requesting series again, and it says it has been requested.
But looking in Overseerr, there's nothing there.
E.g.
- Requesting a series,
The Second Husband
(not present in either Sonarr or Plex) - Requesting it in 1080p, and afterwards in 4K
- Nothing appears in Overseerr
- Tried requesting it again - it says `This has been requested!.
- Looking in Sonarr, the series is not present.
A bit different output from the logs this time:
https://0bin.net/paste/HbQjWEST#YvGXqe9O5a3Q9Ihch1KNh+dP0+k-ZitrN/j1nw7ZiCE
Tried removing the docker instance + image, and re-tried:
- It still says the series has been requested, but still not present in either Sonarr or Overseerr
- Tried requesting a totally different series, not present in either Sonarr, Overseerr or Plex, still says
This has been requested!
- Can you reproduce this?? Seems a bit weird to me
from doplarr.
Yeah sorry, I was messing with the build and went to bed. There is a bug in the newer 1.11.0-alpha2 clojure - going back to alpha1 fixes parts of it. Also found a bug in the finding the status of a new series. Working it now.
from doplarr.
Tested latest commit as of this post
Requesting seems to work, except this weird error:
- Requesting an item gives the message
Requested!
immediatly followed by "This has been requested!". - I'm guessing the
This has been requested!
message meansThis has already been requested!
- Happening both to regular requests and 4K requests
Looks like this:
https://i.imgur.com/xSqJ42P.png
from doplarr.
@vp-en That is on purpose! The Requested!
message is the end of the request interaction while the This has been requested
message is non-ephemeral (everyone on the channel can see it) to let everyone know something has been requested
from doplarr.
I wouldn't say short - we've been at this a while haha!
from doplarr.
Haha yeah true
from doplarr.
@AstralDestiny Sounds like a bot permissions issue
from doplarr.
It has the Admin one that grants it all permissions so I only assume that's not an issue in the end
from doplarr.
@AstralDestiny I wouldn't give the bot admin - as it mentions there, that is generally not a good idea.
What matters here is the OAuth2 permissions (how you invited the bot to your server). The important ones being applications.commands
and bot
You shouldn't need to give the bot any permissions from the Bot
tab - those don't impact slash commands.
from doplarr.
So when you invite the bot to your server it will say something like
from doplarr.
I'm just laughing at myself I was blind.
from doplarr.
Related Issues (20)
- Is there a way to disable selection of quality profiles and root drive? HOT 1
- Enable sharing of requests to channel and not just the requesting user? HOT 1
- Custom bot status HOT 1
- New version no longer returning results HOT 13
- JSON parse error with Sonarr HOT 5
- Edit quality profile using the discord bot HOT 2
- Support Readaar HOT 2
- Slash Commands Not Showing HOT 1
- Feature Request: Ability to query request status with Overseerr
- After selecting quality profile, does not proceed. HOT 2
- JAR file not respecting my config.edn options HOT 2
- Support Config to instruct Sonarr to use Season Folders
- Search result returned no hits
- "The application did not respond" While searching for a request HOT 3
- [Feature Request] Possibility to request animes in Sonarr HOT 4
- Exception in thread "async-dispatch-1" java.lang.IndexOutOfBoundsException
- Constant "crashing", force restart of container helps but eventually stops HOT 7
- Request titles containing slashes unsearchable HOT 2
- Movie search returns no results while series search works as expected HOT 18
- [FEATURE REQUEST] Discord DM Notifications when Request is Available HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from doplarr.