Giter Club home page Giter Club logo

overseerr's Introduction

Overseerr

Overseerr Release Overseerr CI

Discord Docker pulls Translation status GitHub All Contributors

Overseerr is a free and open source software application for managing requests for your media library. It integrates with your existing services, such as Sonarr, Radarr, and Plex!

Current Features

  • Full Plex integration. Authenticate and manage user access with Plex!
  • Easy integration with your existing services. Currently, Overseerr supports Sonarr and Radarr. More to come!
  • Plex library scan, to keep track of the titles which are already available.
  • Customizable request system, which allows users to request individual seasons or movies in a friendly, easy-to-use interface.
  • Incredibly simple request management UI. Don't dig through the app to simply approve recent requests!
  • Granular permission system.
  • Support for various notification agents.
  • Mobile-friendly design, for when you need to approve requests on the go!

With more features on the way! Check out our issue tracker to see the features which have already been requested.

Getting Started

Check out our documentation for instructions on how to install and run Overseerr:

https://docs.overseerr.dev/getting-started/installation

Preview

Support

API Documentation

Our documentation is built on every commit and hosted at https://api-docs.overseerr.dev

You can also access the API documentation from your local Overseerr install at http://localhost:5055/api-docs

Community

You can ask questions, share ideas, and more in GitHub Discussions.

If you would like to chat with other members of our growing community, join the Overseerr Discord server!

Our Code of Conduct applies to all Overseerr community channels.

Contributing

You can help improve Overseerr too! Check out our Contribution Guide to get started.

Contributors ✨

Thanks goes to these wonderful people (emoji key):

sct
sct

πŸ’» 🎨 πŸ€”
Alex Zoitos
Alex Zoitos

πŸ’»
Brandon Cohen
Brandon Cohen

πŸ’» πŸ“–
Ahreluth
Ahreluth

🌍
KovalevArtem
KovalevArtem

🌍
GiyomuWeb
GiyomuWeb

🌍
Angry Cuban
Angry Cuban

πŸ“–
jvennik
jvennik

🌍
darknessgp
darknessgp

πŸ’»
salty
salty

πŸš‡
Shutruk
Shutruk

🌍
Krystian Charubin
Krystian Charubin

🎨
Kieron Boswell
Kieron Boswell

πŸ’»
samwiseg0
samwiseg0

πŸ’¬ πŸš‡
ecelebi29
ecelebi29

πŸ’» πŸ“–
MārtiΕ†Ε‘ MoΕΎeiko
MārtiΕ†Ε‘ MoΕΎeiko

πŸ’»
mazzetta86
mazzetta86

🌍
Paul Hagedorn
Paul Hagedorn

🌍
Shagon94
Shagon94

🌍
sebstrgg
sebstrgg

🌍
Danshil Mungur
Danshil Mungur

πŸ’» πŸ“–
doob187
doob187

πŸš‡
johnpyp
johnpyp

πŸ’»
Jakob Ankarhem
Jakob Ankarhem

πŸ“– πŸ’» 🌍
Jayesh
Jayesh

πŸ’»
flying-sausages
flying-sausages

πŸ“–
hirenshah
hirenshah

πŸ“–
TheCatLady
TheCatLady

πŸ’» 🌍 πŸ“–
Chris Pritchard
Chris Pritchard

πŸ’» πŸ“–
Tamberlox
Tamberlox

🌍
David
David

πŸ’»
Douglas Parker
Douglas Parker

πŸ“–
Daniel Carter
Daniel Carter

πŸ’»
nuro
nuro

πŸ“–
α—ͺΡ”Ξ½ΞΉΞ· α—·Ο…Π½ΚŸ
α—ͺΡ”Ξ½ΞΉΞ· α—·Ο…Π½ΚŸ

πŸš‡
JonnyWong16
JonnyWong16

πŸ“–
Roxedus
Roxedus

πŸ“–
WoisWoi
WoisWoi

🌍
HubDuck
HubDuck

🌍 πŸ“–
costaht
costaht

πŸ“– 🌍
Shjosan
Shjosan

🌍
kobaubarr
kobaubarr

🌍
Ricardo GonzΓ‘lez
Ricardo GonzΓ‘lez

🌍
Torkil
Torkil

🌍
Jagandeep Brar
Jagandeep Brar

πŸ“–
dtalens
dtalens

🌍
Alex Cortelyou
Alex Cortelyou

πŸ’»
Jono Cairns
Jono Cairns

πŸ’»
DJScias
DJScias

🌍
Dabu-dot
Dabu-dot

🌍
Jabster28
Jabster28

πŸ’»
littlerooster
littlerooster

🌍
Dustin Hildebrandt
Dustin Hildebrandt

πŸ’»
Bruno Guerreiro
Bruno Guerreiro

🌍
Alexander NeuhΓ€user
Alexander NeuhΓ€user

🌍
Livio
Livio

🎨
tangentThought
tangentThought

πŸ’»
NicolΓ‘s Espinoza
NicolΓ‘s Espinoza

πŸ’»
sootylunatic
sootylunatic

🌍
JoKerIsCraZy
JoKerIsCraZy

🌍
Daddie0
Daddie0

🌍
Simone
Simone

🌍
Seohyun Joo
Seohyun Joo

🌍
Sergey
Sergey

🌍
Shaaft
Shaaft

🌍
sr093906
sr093906

🌍
Nackophilz
Nackophilz

🌍
Sean Chambers
Sean Chambers

πŸ’»
deniscerri
deniscerri

🌍
tomgacz
tomgacz

🌍
Andersborrits
Andersborrits

🌍
Maxent
Maxent

🌍
Samuel BartΓ­k
Samuel BartΓ­k

πŸ’»
Chun Yeung Wong
Chun Yeung Wong

πŸ’»
TheMeanCanEHdian
TheMeanCanEHdian

πŸ’»
Gylesie
Gylesie

πŸ’»
Fhd-pro
Fhd-pro

🌍
PovilasID
PovilasID

🌍
byakurau
byakurau

🌍
miknii
miknii

🌍
Mackenzie
Mackenzie

πŸ’»
soup
soup

πŸ“–
ceptonit
ceptonit

πŸ“–
aedelbro
aedelbro

πŸ’»
Pedro Nascimento
Pedro Nascimento

πŸ’»
Owen Voke
Owen Voke

πŸ’»
Sebastian K
Sebastian K

πŸ’»
jariz
jariz

πŸ’»
Alex
Alex

πŸ’»
Zeb Muller
Zeb Muller

πŸ’»
Shane Friedman
Shane Friedman

πŸ’»
Izaac BrΓ₯nn
Izaac BrΓ₯nn

πŸ’»
Salman Tariq
Salman Tariq

πŸ’»
Andrew Kennedy
Andrew Kennedy

πŸ’»
Fallenbagel
Fallenbagel

πŸ’»
Anton K. (ai Doge)
Anton K. (ai Doge)

πŸ’»
Marco Faggian
Marco Faggian

πŸ’»
Eric Nemchik
Eric Nemchik

πŸ’»
RemiRigal
RemiRigal

πŸ’»
Joseph Risk
Joseph Risk

πŸ’»
Loetwiek
Loetwiek

πŸ’»
Fuochi
Fuochi

πŸ“–

overseerr's People

Contributors

aedelbro avatar allcontributors[bot] avatar ankarhem avatar azoitos avatar chriscpritchard avatar danshilm avatar dependabot[bot] avatar discduck avatar dphildebrandt avatar ecelebi29 avatar fallenbagel avatar flying-sausages avatar giyomuweb avatar hirenshah avatar imgbot[bot] avatar jbentleyjp avatar johnpyp avatar jonnywong16 avatar kovalevartem avatar mmozeiko avatar nicospz avatar onedr0p avatar owenvoke avatar owsleyjr avatar renovate[bot] avatar samwiseg0 avatar sct avatar tangentthought avatar thecatlady avatar weblate 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  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

overseerr's Issues

Requesting already existing movies is possible

Describe the bug
Movies in libraries that use the TMDB agent are not parsed properly and don't show up as Available.
This results in being able to request movies that are already present in Radarr and the Plex library which in turn results in an error in Overseer and a Invalid request Validation failed: -- TmdbId: This movie has already been added in Radarr.

Are you on latest or develop branch?
sctx/overseerr:latest

To Reproduce
Steps to reproduce the behavior:

  1. Request a movie that's already present in Radarr.
  2. Check the logs.

Expected behavior
Ideally, the movie shouldn't be able to be requested if it's already present in Radarr/Plex since the Plex Library Scan would mark the movie as already Available.

Add separate permissions to auto-approve TV and Movies

Is your feature request related to a problem? Please describe.
Currently auto-approve is all inclusive to TV and movie titles. Allowing users to auto-approve TV shows can be a problem if a user requests a series with dozens of seasons.

Describe the solution you'd like
Can the auto-approve permission be split to include the option for TV and Movies separately?

Describe alternatives you've considered
Not to set auto-approve at all which is a limitation. I trust users to auto-approve movies but TV shows are not something I would like to have auto-approve

Additional context
Just an additional permission option.

Plex Require secure connection support

Describe the bug
The Plex connection doesn't work when the secure connections setting in Plex is set to Required. I did a workaround by setting it to Preferred.

Are you on latest or develop branch?
latest

To Reproduce
Steps to reproduce the behavior:

  1. Do a fresh install on Docker using the latest branch
  2. Notice a Plex login dialog, and sign in.
  3. Overseerr will display a server connetion page which also defaults to 127.0.0.1, don't think this is going to work since we're in docker. But anyway, I changed this to my Plex server IP 172.17.0.1 and also tried my LAN IP.
  4. Fill in the correct Plex port.
  5. Save the settings
  6. Notice that the application is not responding, nor loading libraries from Plex. Sometimes a "Websocket hung up" error appears.
  7. Go to Plex server settings > Network > Secure connections > Change it back to Preferred
  8. In Overseerr, try to sync again and notice it only works with unsecured connections.

Expected behavior
Overseerr should sync using secured connections.

Desktop (please complete the following information):

  • OS: Windows 10
  • Browser Chrome 87.0.4280.88
  • Version 1.3.2

Add Emby Support

Is your feature request related to a problem? Please describe.
Overseerr only supports Plex

Describe the solution you'd like
Would love to see Emby supported

Request more button for shows not working as intended.

Describe the bug
When you click the request more button, there is heavy slow down on the pop up. It will take a long time to open and sometimes will close itself automatically.
To Reproduce
Steps to reproduce the behavior:

  1. Go to requests and then click on show.
  2. Click on request more
  3. See error

Screenshots
If applicable, add screenshots to help explain your problem.

Screenshot 2020-12-09 125706

Use the Plex API to pre-populate the server information

Is your feature request related to a problem? Please describe.
Plex.tv has an API call that can be made to get a list of servers a user has access to. Pulling this list would make the initial setup for users much easier since it is the same method the players use to discover the server.

Describe the solution you'd like
Use the Plex API to pre-populate the Plex server information.

Additional details can be found here.
https://support.plex.tv/articles/206721658-using-plex-tv-resources-information-to-troubleshoot-app-connections/

Add Tag support for Sonarr/Radarr

Is your feature request related to a problem? Please describe.
Currently Sonarr and Radarr use Tags to help control the content that will eventually be downloaded - for example, if content is HEVC or from a certain provider.

Describe the solution you'd like
Within Sonarr and Radarr, they allow the use of passing Tags into their API calls.
Sonarr documentation
Radarr documentation

So adding the ability to pass the Tags within their respective API calls will be the first step. Whether that be through a textbox or a dropdown menu - VERY similar to how profiles is set up.

I think the setting it up through a drop-down menu that's auto-populated would be ideal, have a dropdown menu of Tags that are configured within Radarr/Sonarr would yield the greatest User Experience.

Describe alternatives you've considered
I've looked into adding default Tags to Profiles in both Sonarr/Radarr, it doesn't look like it's a current feature. Radarr does have a setting within a profile to have a custom format, but that's different.

Listen on specific interface only

Is your feature request related to a problem? Please describe.
I'm running overseerr as standalone server, no docker. But by default it binds to 0.0.0.0 interface - meaning it listens on all of them. That is a problem because don't want software outside of this server machine to connect to overseerr directly. I want to reverse-proxy it through caddy.

Describe the solution you'd like
Allow to specify interface to bind, similarly how PORT is specified from environment variables.
If you don't want to have universal way to specify interface, then at least option to bind ONLY to 127.0.0.1 would be fine too.

For examples, see how sonarr/radarr specifies http listening settings:
image

Request Card - Seasons + Email overflow

Describe the bug
When there are many seasons in a tv show, the number of seasons overlap below the request card image
If a user has a long email, it will overlap on the request card image.

Expected behavior
Add a overflow-scroll x to seasons.
Add ellipsis to email.

Screenshots

Optimize Plex Sync?

Is your feature request related to a problem? Please describe.
I noticed that the sync takes a very long time. Based off other projects, this should not be the case?

Describe the solution you'd like
Pulling in all library items from plex should be very quick with correct API calls. Check the PlexAPI project for ideas.

The other thought I had is this could take longer as its pulling in metadata from TMDB? This could async as to not slow down the process.

Subsequent scans should do a very quick check to verify that nothing has changed just from Plex.

Allow Sonarr/Radarr self-signed certs

Is your feature request related to a problem? Please describe.
We can enable SSL with sonarr and radarr but there isn't an option to allow self-signed certificates
It's reported as an error.
[error][Radarr]: [Radarr] Failed to retrieve profiles: self signed certificate

Describe the solution you'd like
Maybe a checkbox saying "Allow self-signed certificates"

Adding Sonarr Tags when requesting Anime

Describe the solution you'd like

  • If a user requests an anime, the anime will auto-set a tag so it searches within the restriction in Sonarr. For example, Attack on Titan will search both sub, dub, and raw files. If the server admin sets the restriction in Sonarr, it will download only dub.

Additional context

Edit

Recently Added showing items outside of enabled libraries

Describe the bug
The recently added section shows two movies that are not in the libraries enabled in Overseerr.

Are you on latest or develop branch?
Develop

To Reproduce

  1. Recently added sync automatically runs

Expected behavior
I do not expect to see items from outside of enabled libraries.

Screenshots
1
2

Desktop (please complete the following information):

  • OS: [Windows 10 x64]
  • Browser [Firefox]
  • Version [83.0]

Additional context

Email notifications incorrectly sending empty authentication data

Describe the bug
When sending email notifications, if the "Auth User" and "Auth Password" fields are left blank, Overseerr still tries to authenticate against the SMTP server with empty fields, causing it to fail.

What version of Overseerr are you running?
1.5.0

You can find it under: Settings -> About -> Version

To Reproduce
Steps to reproduce the behavior:

  1. Configure SMTP Notifications and do NOT set user/password for auth
  2. Generate a notification event (make request, approve request etc)
  3. An error will be thrown that credentials are missing and the SMTP session fails

Expected behavior
SMTP Relays that do not require auth (e.g. internal notification email servers) should be able to accept SMTP sessions without any authentication, leaving the fields blank in Overseerr should indicate that authentication is not required, instead it tries to anyway with empty fields.

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: Windows 10 2009
  • Browser Firefox
  • Version 83

Additional context
Log snippet of failure:
2020-12-15T15:40:51.388Z [info][Notifications]: Sending notification for MEDIA_PENDING
(node:28) UnhandledPromiseRejectionWarning: Error: Missing credentials for "PLAIN"
at SMTPConnection._formatError (/app/node_modules/nodemailer/lib/smtp-connection/index.js:774:19)
at SMTPConnection.login (/app/node_modules/nodemailer/lib/smtp-connection/index.js:438:38)
at /app/node_modules/nodemailer/lib/smtp-transport/index.js:271:32
at SMTPConnection. (/app/node_modules/nodemailer/lib/smtp-connection/index.js:209:17)
at Object.onceWrapper (events.js:421:28)
at SMTPConnection.emit (events.js:315:20)
at SMTPConnection._actionEHLO (/app/node_modules/nodemailer/lib/smtp-connection/index.js:1303:14)
at SMTPConnection._processResponse (/app/node_modules/nodemailer/lib/smtp-connection/index.js:932:20)
at SMTPConnection._onData (/app/node_modules/nodemailer/lib/smtp-connection/index.js:739:14)
at TLSSocket.SMTPConnection._onSocketData (/app/node_modules/nodemailer/lib/smtp-connection/index.js:189:44)
at TLSSocket.emit (events.js:315:20)
at addChunk (_stream_readable.js:295:12)
at readableAddChunk (_stream_readable.js:271:9)
at TLSSocket.Readable.push (_stream_readable.js:212:10)
at TLSWrap.onStreamRead (internal/stream_base_commons.js:186:23)
(node:28) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag --unhandled-rejections=strict (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 8)
(node:28) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

Support for Raspberry Pi

Is your feature request related to a problem? Please describe.
I would very much like to try overseerr on a raspberry pi, however the architecture is currently not supported. Error:
"standard_init_linux.go:219: exec user process caused: exec format error"

Describe the solution you'd like
Support for Raspberry Pi 3 + 4

Plex Manual Library Sync blocked

Describe the bug
Overseerr is blocked on 250/493 on my movie library during first manual library sync.

Are you on latest or develop branch?
I just installed through docker, so I think Im on latestet release, but the About page respond in 404, so no guess there
Same for the log page : error 404

To Reproduce
Launch manual sync

Expected behavior
Manual sync complete the operation

Additional context
The name of one the movies can eventually block the operation : japanese anime, french movie with accent in the name...
but without log I cant't say what

** EDIT **
I just thought about checking docker logs, I've found this :


(node:28) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'forEach' of undefined
at JobPlexSync.processMovie (/app/dist/job/plexsync/index.js:43:27)
at runMicrotasks ()
at processTicksAndRejections (internal/process/task_queues.js:97:5)
at async /app/dist/job/plexsync/index.js:191:17
at async Promise.all (index 5)
at async JobPlexSync.processItems (/app/dist/job/plexsync/index.js:189:9)
at async JobPlexSync.loop (/app/dist/job/plexsync/index.js:202:13)
at async Timeout._onTimeout (/app/dist/job/plexsync/index.js:204:17)
(node:28) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag --unhandled-rejections=strict (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 11)


Otherwise, the application has already a good look and feel. and it's definitly way faster than omby !!
Please continue this great work !

Run overseerr on subpath, Base URL

Is your feature request related to a problem? Please describe.
I'm reverse-proxying all services on main domain with caddy. Like https://example.com/radarr/ and https://example.com/sonarr/ and I want to do same with https://example.com/overseerr/
But currently it expects to be available on / path.

Describe the solution you'd like
Solution would be either to use relative URL's throughout the project. Or allow to specify base url/path in startup parameters, like PORT is specific in env variables. Like export BASE=/overseerr would be good enough for me.

Error: Request failed with status code 500

Describe the bug
Getting error when trying to run it. It also display erro in browser

To Reproduce
Steps to reproduce the behavior:

  1. sudo docker-compose up

Expected behavior
Running wihtout error

Screenshots
Screenshot from 2020-12-14 13-42-12

Desktop (please complete the following information):

  • OS: Ubuntu 20.04
  • Browser: Firefox
  • Version: 83.0

Additional context

$ cat docker-compose.yml 
version: '3'
services:
  overseerr:
    build:
      context: .
      dockerfile: Dockerfile.local
    ports:
      - 3003
    volumes:
      - .:/app:rw,cached
      - /app/node_modules
      - /app/.next
    network_mode: host
    environment:
      - PORT=3003
overseerr_1  | yarn run v1.22.4
overseerr_1  | $ nodemon -e ts --watch server --watch overseerr-api.yml -e .json,.ts,.yml -x ts-node --files --project server/tsconfig.json server/index.ts
overseerr_1  | [nodemon] 2.0.6
overseerr_1  | [nodemon] to restart at any time, enter `rs`
overseerr_1  | [nodemon] watching path(s): server/**/* overseerr-api.yml
overseerr_1  | [nodemon] watching extensions: json,ts,yml
overseerr_1  | [nodemon] starting `ts-node --files --project server/tsconfig.json server/index.ts`
overseerr_1  | info  - Using external babel configuration from /app/babel.config.js
overseerr_1  | event - compiled successfully
overseerr_1  | 2020-12-14T05:25:30.744Z [info][Notifications]: Registered Notification Agents 
overseerr_1  | 2020-12-14T05:25:30.750Z [info][Jobs]: Scheduled jobs loaded 
overseerr_1  | Mon, 14 Dec 2020 05:25:30 GMT express-session deprecated req.secret; provide secret option at server/index.ts:64:49
overseerr_1  | $ref: keywords ignored in schema at path "#/properties/requestedBy"
overseerr_1  | 2020-12-14T05:25:31.024Z [info][SERVER]: Server ready on port 3003 
overseerr_1  | event - build page: /
overseerr_1  | wait  - compiling...
overseerr_1  | event - compiled successfully
overseerr_1  | Error: Request failed with status code 500
overseerr_1  |     at createError (/app/node_modules/axios/lib/core/createError.js:16:15)
overseerr_1  |     at settle (/app/node_modules/axios/lib/core/settle.js:17:12)
overseerr_1  |     at IncomingMessage.handleStreamEnd (/app/node_modules/axios/lib/adapters/http.js:244:11)
overseerr_1  |     at IncomingMessage.emit (events.js:327:22)
overseerr_1  |     at IncomingMessage.EventEmitter.emit (domain.js:483:12)
overseerr_1  |     at endReadableNT (_stream_readable.js:1220:12)
overseerr_1  |     at processTicksAndRejections (internal/process/task_queues.js:84:21) {
overseerr_1  |   config: {
overseerr_1  |     url: 'http://localhost:3003/api/v1/settings/public',
overseerr_1  |     method: 'get',
overseerr_1  |     headers: {
overseerr_1  |       Accept: 'application/json, text/plain, */*',
overseerr_1  |       'User-Agent': 'axios/0.21.0'
overseerr_1  |     },
overseerr_1  |     transformRequest: [ [Function: transformRequest] ],
overseerr_1  |     transformResponse: [ [Function: transformResponse] ],
overseerr_1  |     timeout: 0,
overseerr_1  |     adapter: [Function: httpAdapter],
overseerr_1  |     xsrfCookieName: 'XSRF-TOKEN',
overseerr_1  |     xsrfHeaderName: 'X-XSRF-TOKEN',
overseerr_1  |     maxContentLength: -1,
overseerr_1  |     maxBodyLength: -1,
overseerr_1  |     validateStatus: [Function: validateStatus],
overseerr_1  |     data: undefined
overseerr_1  |   },
overseerr_1  |   request: ClientRequest {
overseerr_1  |     _events: [Object: null prototype] {
overseerr_1  |       socket: [Function],
overseerr_1  |       abort: [Function],
overseerr_1  |       aborted: [Function],
overseerr_1  |       connect: [Function],
overseerr_1  |       error: [Function],
overseerr_1  |       timeout: [Function],
overseerr_1  |       prefinish: [Function: requestOnPrefinish]
overseerr_1  |     },
overseerr_1  |     _eventsCount: 7,
overseerr_1  |     _maxListeners: undefined,
overseerr_1  |     outputData: [],
overseerr_1  |     outputSize: 0,
overseerr_1  |     writable: true,
overseerr_1  |     _last: true,
overseerr_1  |     chunkedEncoding: false,
overseerr_1  |     shouldKeepAlive: false,
overseerr_1  |     useChunkedEncodingByDefault: false,
overseerr_1  |     sendDate: false,
overseerr_1  |     _removedConnection: false,
overseerr_1  |     _removedContLen: false,
overseerr_1  |     _removedTE: false,
overseerr_1  |     _contentLength: 0,
overseerr_1  |     _hasBody: true,
overseerr_1  |     _trailer: '',
overseerr_1  |     finished: true,
overseerr_1  |     _headerSent: true,
overseerr_1  |     socket: Socket {
overseerr_1  |       connecting: false,
overseerr_1  |       _hadError: false,
overseerr_1  |       _parent: null,
overseerr_1  |       _host: 'localhost',
overseerr_1  |       _readableState: [ReadableState],
overseerr_1  |       readable: true,
overseerr_1  |       _events: [Object: null prototype],
overseerr_1  |       _eventsCount: 7,
overseerr_1  |       _maxListeners: undefined,
overseerr_1  |       _writableState: [WritableState],
overseerr_1  |       writable: false,
overseerr_1  |       allowHalfOpen: false,
overseerr_1  |       _sockname: null,
overseerr_1  |       _pendingData: null,
overseerr_1  |       _pendingEncoding: '',
overseerr_1  |       server: null,
overseerr_1  |       _server: null,
overseerr_1  |       parser: null,
overseerr_1  |       _httpMessage: [Circular],
overseerr_1  |       [Symbol(asyncId)]: 87866,
overseerr_1  |       [Symbol(kHandle)]: [TCP],
overseerr_1  |       [Symbol(kSetNoDelay)]: false,
overseerr_1  |       [Symbol(lastWriteQueueSize)]: 0,
overseerr_1  |       [Symbol(timeout)]: null,
overseerr_1  |       [Symbol(kBuffer)]: null,
overseerr_1  |       [Symbol(kBufferCb)]: null,
overseerr_1  |       [Symbol(kBufferGen)]: null,
overseerr_1  |       [Symbol(kCapture)]: false,
overseerr_1  |       [Symbol(kBytesRead)]: 0,
overseerr_1  |       [Symbol(kBytesWritten)]: 0
overseerr_1  |     },
overseerr_1  |     connection: Socket {
overseerr_1  |       connecting: false,
overseerr_1  |       _hadError: false,
overseerr_1  |       _parent: null,
overseerr_1  |       _host: 'localhost',
overseerr_1  |       _readableState: [ReadableState],
overseerr_1  |       readable: true,
overseerr_1  |       _events: [Object: null prototype],
overseerr_1  |       _eventsCount: 7,
overseerr_1  |       _maxListeners: undefined,
overseerr_1  |       _writableState: [WritableState],
overseerr_1  |       writable: false,
overseerr_1  |       allowHalfOpen: false,
overseerr_1  |       _sockname: null,
overseerr_1  |       _pendingData: null,
overseerr_1  |       _pendingEncoding: '',
overseerr_1  |       server: null,
overseerr_1  |       _server: null,
overseerr_1  |       parser: null,
overseerr_1  |       _httpMessage: [Circular],
overseerr_1  |       [Symbol(asyncId)]: 87866,
overseerr_1  |       [Symbol(kHandle)]: [TCP],
overseerr_1  |       [Symbol(kSetNoDelay)]: false,
overseerr_1  |       [Symbol(lastWriteQueueSize)]: 0,
overseerr_1  |       [Symbol(timeout)]: null,
overseerr_1  |       [Symbol(kBuffer)]: null,
overseerr_1  |       [Symbol(kBufferCb)]: null,
overseerr_1  |       [Symbol(kBufferGen)]: null,
overseerr_1  |       [Symbol(kCapture)]: false,
overseerr_1  |       [Symbol(kBytesRead)]: 0,
overseerr_1  |       [Symbol(kBytesWritten)]: 0
overseerr_1  |     },
overseerr_1  |     _header: 'GET /api/v1/settings/public HTTP/1.1\r\n' +
overseerr_1  |       'Accept: application/json, text/plain, */*\r\n' +
overseerr_1  |       'User-Agent: axios/0.21.0\r\n' +
overseerr_1  |       'Host: localhost:3003\r\n' +
overseerr_1  |       'Connection: close\r\n' +
overseerr_1  |       '\r\n',
overseerr_1  |     _onPendingData: [Function: noopPendingOutput],
overseerr_1  |     agent: Agent {
overseerr_1  |       _events: [Object: null prototype],
overseerr_1  |       _eventsCount: 2,
overseerr_1  |       _maxListeners: undefined,
overseerr_1  |       defaultPort: 80,
overseerr_1  |       protocol: 'http:',
overseerr_1  |       options: [Object],
overseerr_1  |       requests: {},
overseerr_1  |       sockets: [Object],
overseerr_1  |       freeSockets: {},
overseerr_1  |       keepAliveMsecs: 1000,
overseerr_1  |       keepAlive: false,
overseerr_1  |       maxSockets: Infinity,
overseerr_1  |       maxFreeSockets: 256,
overseerr_1  |       [Symbol(kCapture)]: false
overseerr_1  |     },
overseerr_1  |     socketPath: undefined,
overseerr_1  |     method: 'GET',
overseerr_1  |     insecureHTTPParser: undefined,
overseerr_1  |     path: '/api/v1/settings/public',
overseerr_1  |     _ended: true,
overseerr_1  |     res: IncomingMessage {
overseerr_1  |       _readableState: [ReadableState],
overseerr_1  |       readable: false,
overseerr_1  |       _events: [Object: null prototype],
overseerr_1  |       _eventsCount: 3,
overseerr_1  |       _maxListeners: undefined,
overseerr_1  |       socket: [Socket],
overseerr_1  |       connection: [Socket],
overseerr_1  |       httpVersionMajor: 1,
overseerr_1  |       httpVersionMinor: 1,
overseerr_1  |       httpVersion: '1.1',
overseerr_1  |       complete: true,
overseerr_1  |       headers: [Object],
overseerr_1  |       rawHeaders: [Array],
overseerr_1  |       trailers: {},
overseerr_1  |       rawTrailers: [],
overseerr_1  |       aborted: false,
overseerr_1  |       upgrade: false,
overseerr_1  |       url: '',
overseerr_1  |       method: null,
overseerr_1  |       statusCode: 500,
overseerr_1  |       statusMessage: 'Internal Server Error',
overseerr_1  |       client: [Socket],
overseerr_1  |       _consuming: false,
overseerr_1  |       _dumped: false,
overseerr_1  |       req: [Circular],
overseerr_1  |       responseUrl: 'http://localhost:3003/api/v1/settings/public',
overseerr_1  |       redirects: [],
overseerr_1  |       [Symbol(kCapture)]: false
overseerr_1  |     },
overseerr_1  |     aborted: false,
overseerr_1  |     timeoutCb: null,
overseerr_1  |     upgradeOrConnect: false,
overseerr_1  |     parser: null,
overseerr_1  |     maxHeadersCount: null,
overseerr_1  |     reusedSocket: false,
overseerr_1  |     _redirectable: Writable {
overseerr_1  |       _writableState: [WritableState],
overseerr_1  |       writable: true,
overseerr_1  |       _events: [Object: null prototype],
overseerr_1  |       _eventsCount: 2,
overseerr_1  |       _maxListeners: undefined,
overseerr_1  |       _options: [Object],
overseerr_1  |       _ended: true,
overseerr_1  |       _ending: true,
overseerr_1  |       _redirectCount: 0,
overseerr_1  |       _redirects: [],
overseerr_1  |       _requestBodyLength: 0,
overseerr_1  |       _requestBodyBuffers: [],
overseerr_1  |       _onNativeResponse: [Function],
overseerr_1  |       _currentRequest: [Circular],
overseerr_1  |       _currentUrl: 'http://localhost:3003/api/v1/settings/public',
overseerr_1  |       [Symbol(kCapture)]: false
overseerr_1  |     },
overseerr_1  |     [Symbol(kCapture)]: false,
overseerr_1  |     [Symbol(kNeedDrain)]: false,
overseerr_1  |     [Symbol(corked)]: 0,
overseerr_1  |     [Symbol(kOutHeaders)]: [Object: null prototype] {
overseerr_1  |       accept: [Array],
overseerr_1  |       'user-agent': [Array],
overseerr_1  |       host: [Array]
overseerr_1  |     }
overseerr_1  |   },
overseerr_1  |   response: {
overseerr_1  |     status: 500,
overseerr_1  |     statusText: 'Internal Server Error',
overseerr_1  |     headers: {
overseerr_1  |       'x-powered-by': 'Express',
overseerr_1  |       'content-type': 'application/json; charset=utf-8',
overseerr_1  |       'content-length': '49',
overseerr_1  |       etag: 'W/"31-cTLyuZrTZhoNpxkqok0MBLCOsYA"',
overseerr_1  |       date: 'Mon, 14 Dec 2020 05:26:00 GMT',
overseerr_1  |       connection: 'close'
overseerr_1  |     },
overseerr_1  |     config: {
overseerr_1  |       url: 'http://localhost:3003/api/v1/settings/public',
overseerr_1  |       method: 'get',
overseerr_1  |       headers: [Object],
overseerr_1  |       transformRequest: [Array],
overseerr_1  |       transformResponse: [Array],
overseerr_1  |       timeout: 0,
overseerr_1  |       adapter: [Function: httpAdapter],
overseerr_1  |       xsrfCookieName: 'XSRF-TOKEN',
overseerr_1  |       xsrfHeaderName: 'X-XSRF-TOKEN',
overseerr_1  |       maxContentLength: -1,
overseerr_1  |       maxBodyLength: -1,
overseerr_1  |       validateStatus: [Function: validateStatus],
overseerr_1  |       data: undefined
overseerr_1  |     },
overseerr_1  |     request: ClientRequest {
overseerr_1  |       _events: [Object: null prototype],
overseerr_1  |       _eventsCount: 7,
overseerr_1  |       _maxListeners: undefined,
overseerr_1  |       outputData: [],
overseerr_1  |       outputSize: 0,
overseerr_1  |       writable: true,
overseerr_1  |       _last: true,
overseerr_1  |       chunkedEncoding: false,
overseerr_1  |       shouldKeepAlive: false,
overseerr_1  |       useChunkedEncodingByDefault: false,
overseerr_1  |       sendDate: false,
overseerr_1  |       _removedConnection: false,
overseerr_1  |       _removedContLen: false,
overseerr_1  |       _removedTE: false,
overseerr_1  |       _contentLength: 0,
overseerr_1  |       _hasBody: true,
overseerr_1  |       _trailer: '',
overseerr_1  |       finished: true,
overseerr_1  |       _headerSent: true,
overseerr_1  |       socket: [Socket],
overseerr_1  |       connection: [Socket],
overseerr_1  |       _header: 'GET /api/v1/settings/public HTTP/1.1\r\n' +
overseerr_1  |         'Accept: application/json, text/plain, */*\r\n' +
overseerr_1  |         'User-Agent: axios/0.21.0\r\n' +
overseerr_1  |         'Host: localhost:3003\r\n' +
overseerr_1  |         'Connection: close\r\n' +
overseerr_1  |         '\r\n',
overseerr_1  |       _onPendingData: [Function: noopPendingOutput],
overseerr_1  |       agent: [Agent],
overseerr_1  |       socketPath: undefined,
overseerr_1  |       method: 'GET',
overseerr_1  |       insecureHTTPParser: undefined,
overseerr_1  |       path: '/api/v1/settings/public',
overseerr_1  |       _ended: true,
overseerr_1  |       res: [IncomingMessage],
overseerr_1  |       aborted: false,
overseerr_1  |       timeoutCb: null,
overseerr_1  |       upgradeOrConnect: false,
overseerr_1  |       parser: null,
overseerr_1  |       maxHeadersCount: null,
overseerr_1  |       reusedSocket: false,
overseerr_1  |       _redirectable: [Writable],
overseerr_1  |       [Symbol(kCapture)]: false,
overseerr_1  |       [Symbol(kNeedDrain)]: false,
overseerr_1  |       [Symbol(corked)]: 0,
overseerr_1  |       [Symbol(kOutHeaders)]: [Object: null prototype]
overseerr_1  |     },
overseerr_1  |     data: { message: 'secret option required for sessions' }
overseerr_1  |   },
overseerr_1  |   isAxiosError: true,
overseerr_1  |   toJSON: [Function: toJSON]
overseerr_1  | }
overseerr_1  | 2020-12-14T05:30:00.014Z [info][Jobs]: Starting scheduled job: Plex Recently Added Sync 
overseerr_1  | (node:39) UnhandledPromiseRejectionWarning: EntityNotFound: Could not find any entity of type "User" matching: {
overseerr_1  |     "select": [
overseerr_1  |         "id",
overseerr_1  |         "plexToken"
overseerr_1  |     ],
overseerr_1  |     "order": {
overseerr_1  |         "id": "ASC"
overseerr_1  |     }
overseerr_1  | }
overseerr_1  |     at new EntityNotFoundError (/app/src/error/EntityNotFoundError.ts:11:9)
overseerr_1  |     at /app/src/entity-manager/EntityManager.ts:821:39
overseerr_1  |     at JobPlexSync.run (/app/server/job/plexsync/index.ts:280:21)
overseerr_1  | (node:39) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 3)
overseerr_1  | (node:39) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

About and Logs pages give 404

Describe the bug
If you go to About or Logs pages under settings it will give 404 error.

Are you on latest or develop branch?
Same on 1.3.2 or develop tip.

Spanish translation

Hi, I would like to contribute with the spanish translation on weblate.
Awaiting further instructions.

Ability to set friendly names for users, Alias

Is your feature request related to a problem? Please describe.
It would be ideal to be able to set friendly names per user as it is difficult to remember every user's username.

Describe the solution you'd like
The ability to set friendly names for each user.

Searching with a Symbol "+", "!" freezes Google Chrome

Describe the bug

  • When searching a something like "Romeo + Juliet" or "Haikyuu!!" it freezes the browser. Mostly Google Chrome. I am unable to close the tab or refresh the page. I have to close the browser to have access back.
  • Using Firefox, the browser doesn't crash but it outputs a lot of errors into the console.

Are you on the latest or develop branch?

  • Develop branch as of 14/12/2020 1:43 am MDT

Screenshots

Desktop (please complete the following information):

  • OS: Windows 10 Pro - 20H2
  • Browser Chrome, Firefox
  • Version (87.0.4280.88 - Chrome ) (83.0 - Firefox)

Unable to Set Up with Non-Default Plex Port

Describe the bug
When setting up through the http://[ip]:5055/setup dialogue, I can log in with Plex to link it, however when I attempt to enter in a hostname/IP as well as a Port number, I receive an error stating Failed to connect to Plex: connect ECONNREFUSED 127.0.0.1:32400. No matter which port I enter in the Port field before clicking save, the error always reports that it can not connect to [ip]:32400. Indicating that either the logging message is incorrect, or the custom port is not being entered when Save Changes is selected

Are you on latest or develop branch?
I have been able to reproduce this error on Docker Latest and Docker Develop tags

To Reproduce
Steps to reproduce the behavior:

  1. Change the plex port to a non-standard port.
  2. Start a brand new docker instance of the app
  3. Navigate to the setup dialogue at http://[IP]:5055
  4. Proceed through the Login with Plex Step
  5. At step 2, enter the hostname/IP as well as the non-standard port.
  6. Click Save Changes and proceed with the rest of setup.

Expected behavior
If successful, this should allow for the setup process to continue with plex at the non-standard port.

Screenshots
image

Desktop (please complete the following information):

  • OS: Windows 10 20H2, 19042.685
  • Browser: Microsoft Edge 87.0.664.60 (Official build) (64-bit), Google Chrome 87.0.4280.88 (Official Build) (64-bit)

Sonarr/Radar sync

Is your feature request related to a problem? Please describe.
Not currently syncing with Sonarr/Radarr watchlists

Describe the solution you'd like
Ability to sync with Sonarr/Radarr so that already requested items would be marked as "Requested" in Overseerr. Would keep users from requesting items that have already been requested.

Import all users from Plex

Is your feature request related to a problem? Please describe.
Currently, once a user logs in then you can change their permissions. I believe a better workflow would be to import all the users and be able to set permissions ahead of time.

Describe the solution you'd like
Be able to manage users before they log in. I believe a sync job to Plex to collect all the users will be needed and should be ran periodically.

"Add Radarr Server" window vanishes unexpectedly

Describe the bug
"Add Radarr Server" window vanishes unexpectedly

To Reproduce

  1. Navigate to Settings > Services
  2. Click "Add Radarr Server" (same happens with Sonarr)
  3. Press "Cancel"
  4. Click "Add Radarr Server"
  5. Click in "Hostname" text entry field (same happens with any entry field)

UNEXPECTED RESULT:

Dialog window closes.

Desktop (please complete the following information):

  • Ubnuntu
  • Intel CPU
  • Latest Docker image

Automatic Dowloading?

I have added Radarr and the testing worked. However nothing happens after the movie has been requested. Is there something I am missing.
Other than that, the UI is amazing.

Receiving 409 conflict errors when requesting a movie be added by a v2 instance of radarr

Describe the bug
users are receiving 409 conflict errors when requesting a movie be added by a v2 instance of radarr.

Are you on latest or develop branch?
develop

To Reproduce
Steps to reproduce the behavior:

  1. Configure a v2 instance of radarr
  2. Request a movie

Expected behavior
Movie should be added without error.

Radarr Logs:

2020-12-14 21:52:47.1|Info|MovieService|Adding Movie [Hard Kill (2020)][, 724989] Path: [/movies/Movies/Hard Kill (2020)]
2020-12-14 21:52:47.1|Trace|Owin|SQLite error (1299): abort at 42 in [INSERT INTO [Movies] ([TmdbId],[ImdbId],[Title],[CleanTitle],[SortTitle],[Status],[Overview],[Monitored],[MinimumAvailability],[ProfileId],[LastInfoSync],[Runtime],[Images],[TitleSlug],[Website

2020-12-14 21:52:47.1|Trace|NzbDroneErrorPipeline|Handling Exception
2020-12-14 21:52:47.1|Trace|Http|Res: 8732 [POST] /api/movie?apikey=(removed) 409.Conflict (125 ms)
2020-12-14 21:52:47.1|Debug|Api|[POST] /api/movie?apikey=(removed) 409.Conflict (125 ms)

Overseerr Log:

^[[31merror^[[39m][Radarr]: Request failed with status code 409 {"options":{"profileId":1,"qualityProfileId":1,"rootFolderPath":"/movies/Media/Movies/","minimumAvailability":"preDB","title":"The Godfather: Par>

During Library Scan a few items fail to process and a RatingKey is presented for those items

Describe the bug
During a Library Scan some items fail to process and a RatingKey

Are you on latest or develop branch?
The pull was done in the afternoon of 12-14-2020

To Reproduce
One such show is Archer (2009). When a Manual Library Scan is run I am presented with the following error:
[error][Plex Sync]: Failed to process plex item. ratingKey: 7958
The actual show when looked up in Overseerr is marked as Available.

Expected behavior
No Error

Screenshots
image

**Desktop (please complete the following information):
**

  • OS: Windows 10
  • Browser: Chrome
  • Version 87.0.4280.88 (Official Build) (64-bit)

Additional context
Add any other context about the problem here.

Hostname and port issues for services (Sonarr/Radarr)

Describe the bug
My testing reveals that the UI ports for Sonarr and Radarr must be exposed by the container. Also, I am unable to use the hostname of the container (e.g. 'radarr' or 'sonarr'), I must use the IP address explicitly.

Are you on latest or develop branch?
Using "latest" branch as of ~10pm 12/14/20 PST

To Reproduce
Steps to reproduce the behavior:

  1. Have the radarr or sonarr containers not set to expose any ports explicitly (on 'Ports' in docker-compose or -p in docker run)
  2. Try to setup either service in Overseer
  3. Testing will reveal that it is unable to connect to the container

Expected behavior
I expect to be able to leave the ports not exposed while using the hostname of the container.

Workaround
Expose the UI ports of Sonarr and Radarr from their containers and use the IP address in place of the hostname.

Movie and TV Show Trailers

Is your feature request related to a problem? Please describe.
No

Describe the solution you'd like
I would love to see trailers added to the Movie and TV Show pages.

Should make it easier to decide to add a new movie/show or not :)

Describe alternatives you've considered
N/A

Additional context
Would prefer a embedded solution rather than a link to a website.

Initial Scan Stalls: "SQLITE_CONSTRAINT: NOT NULL constraint failed: media.tmdbId"

On initial library scan, it hangs on item 190 and doesn't progress. Cancelling the scan and restarting the scan results in a hang at the same point.

Logs shows...

2020-12-14T07:21:03.084Z [οΏ½[34mdebugοΏ½[39m][Plex Sync]: Title exists and is already available The Art of Racing in the Rain
(node:27) UnhandledPromiseRejectionWarning: QueryFailedError: SQLITE_CONSTRAINT: NOT NULL constraint failed: media.tmdbId

at new QueryFailedError (/app/node_modules/typeorm/error/QueryFailedError.js:11:28)

at Statement.handler (/app/node_modules/typeorm/driver/sqlite/SqliteQueryRunner.js:76:38)

(node:27) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 3)

2020-12-14T07:21:03.099Z [οΏ½[34mdebugοΏ½[39m][Plex Sync]: Title exists and is already available Armageddon

Running latest pull, on unRaid 6.8.3 (can't check overseerr version, as about page 404's)

Sounds similar to #244 but don't think it's the same

Ratings on poster hover over.

Would it be possible to have the rating show on hover over of a poster so I dont have to click through and back again? You probably have better things to do but t would be nice.

example

Library Scan stalls on duplicate imdbId

Describe the bug
Initial library scan stalled.

yarn run v1.22.4,
$ NODE_ENV=production node dist/index.js,
2020-12-14T05:29:02.604Z [info][Notifications]: Registered Notification Agents ,
2020-12-14T05:29:02.612Z [info][Jobs]: Scheduled jobs loaded ,
$ref: keywords ignored in schema at path "#/properties/requestedBy",
2020-12-14T05:29:02.879Z [info][SERVER]: Server ready on port 3000 ,
2020-12-14T05:30:00.039Z [info][Jobs]: Starting scheduled job: Plex Recently Added Sync ,
(node:29) UnhandledPromiseRejectionWarning: EntityNotFound: Could not find any entity of type "User" matching: {,
"select": [,
"id",,
"plexToken",
],,
"order": {,
"id": "ASC",
},
},
at new EntityNotFoundError (/app/node_modules/typeorm/error/EntityNotFoundError.js:11:28),
at /app/node_modules/typeorm/entity-manager/EntityManager.js:555:51,
at async JobPlexSync.run (/app/dist/job/plexsync/index.js:220:27),
(node:29) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag --unhandled-rejections=strict (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 2),
(node:29) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.,
2020-12-14T05:30:15.795Z [error]: Error checking user access: Plex is not configured! ,
2020-12-14T05:31:34.309Z [info][Plex Sync]: Beginning to process library: Movies ,
.
.
.
.
.
(node:29) UnhandledPromiseRejectionWarning: QueryFailedError: SQLITE_CONSTRAINT: UNIQUE constraint failed: media.imdbId,
at new QueryFailedError (/app/node_modules/typeorm/error/QueryFailedError.js:11:28),
at Statement.handler (/app/node_modules/typeorm/driver/sqlite/SqliteQueryRunner.js:76:38),
(node:29) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag --unhandled-rejections=strict (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 3),
.
.
.

Related/Recommended Actors

Is your feature request related to a problem? Please describe.
I love the way the user is kept in the Overseerr environment by being served Related/Recommended titles and cast members pages when looking at a film/TV shows page.
An example of the issue would be that if someone were to look at the Night at the Museum page in Overseer and then want to look at movies the main cast has been in, say for instance Ben Stiller, they go to that actors page and then in order to look at the next cast member's related movies they would have to go back to the Night at the Museum page.

Describe the solution you'd like
I would like there to be a similar category as Related/Recommended as there is for films/TV shows when looking at an Actors page in terms of other Actors that are related, in terms of Degrees of Kevin Bacon style, to that Actor. It would give the user an easier way to flow to the next desirable item.

No data is saved in the mapped /config folder

Describe the bug
I expected to see a configuration file(s) of some sort stored in my mapped /config folder.
There are no files present. I guess this means my current Overseerr Plex/Library/Notifications configuration is stored internally in the Docker container and will not survive an upgrade.

Are you on latest or develop branch?
Latest branch

To Reproduce
Create new Overseerr Docker container with a mapped /config folder.
Browse to the mapped folder on your system.

Expected behavior
Any configuration settings to be stored in the mapped location, so they can be retrieved by a new container instance.

Library set up - can't choose Quality or Root folder until 'Test' complete

Describe the bug
Completing the new Library form will give you errors for the Quality or Root folders because a connection needs to be made to the Library server to retrieve the possible options. This means the library needs to be successfully "Tested" to make the connection before being able to select these options.
This isn't obvious to the user.

Are you on latest or develop branch?
Latest branch

To Reproduce
Add a new Library
Enter Name, Hostname, Port, API Key.
Try to set Quality or Root folder, you'll get an error.
Test the connection.
Now you can set the Quality/Root

Expected behavior
Automatically "Test" the server after the minimum required fields are completed, or make it a two step process.
After entering minimum fields, user should select "Next" which will do the test, if successful then show the Quality/Root options to choose.

Send Discord notifications on all requests, including auto-approved requests

Is your feature request related to a problem? Please describe.
Discord push does not happen when a title requested is from an auto-approve user.

Describe the solution you'd like
I noticed that Overseerr does not push to Discord when a user who has auto-approve permissions requests an item. I can see a need for server owners to want a notification on all requests.

Describe alternatives you've considered
The alternative is to not set users to auto-approve. This forms a limitation

Additional context
None.

Ability to limit requests per user, quotas

Is your feature request related to a problem? Please describe.
The ability to limit the amount of requests a particular user can make. This could be done on a per user basis or another thought would be to create permission groups that would have the limits set. That would make it easier to manage multiple users at once vs changing it per user individually.

Describe the solution you'd like
To have limits that are imposed per user/group. User feedback of their limits would also be necessary. Currently Ombi does a rolling 7 day request rate. Not sure if you would want to implement the same or have that be configurable. Other options could be x day rolling and x number per month.

Misspelling on 'Now Available' email

Ok, so it's a bit of a silly complaint, but certainly an easy fix: the 'Now Available' email that is sent says 'Your requsested media is now available'. It should say 'requested'

Unable to add Radarr or Sonarr servers

Describe the bug
Completely unable to add either a Radarr or Sonarr server.

To Reproduce
Try to enter info for a Radarr server. I use the IP of the host machine, the correct port and API key. Clicking "Test" then brings up the failure notification.

Desktop (please complete the following information):

  • Ubnuntu
  • Intel CPU
  • Latest Docker image

Email Notification Settings do not save

on the :develop channel

I copied the email notification settings over from Ombi and when I click "Save", nothing happens. No notification and I remain on the page. When I navigate away and then back to email settings, the settings I entered are no longer present. I've confirmed the setting in Ombi work by sending myself a test email.

Screen Shot 2020-12-14 at 12 14 11 AM

Notification Settings - Test Buttons

Is your feature request related to a problem? Please describe.
No ability to confirm notification agents are working.

Describe the solution you'd like
Would love to see the ability to send a test message to confirm its working.

Describe alternatives you've considered
N/A

Additional context

image

Jellyfin Support

Is your feature request related to a problem? Please describe.
I would like to use Jellyfin as my media server rather than Plex.

Describe the solution you'd like
Jellyfin is supported alongside Plex.

Describe alternatives you've considered
Use Plex.

Additional context
N/A

Overseerr restarted setup

Describe the bug
I setup Overseerr yesterday and successfully scanned files and made a few requests. I launched the same browser again today and Overseerr started the setup process again.

No logs as logs have disappeared as well as config/setup data.

What version of Overseerr are you running?
1.5.0

To Reproduce
Steps to reproduce the behaviour:

  1. Setup
  2. Leave overnight
  3. Launch browser again
  4. Restart setup process

Desktop (please complete the following information):

  • Browser: chrome
  • Version: Version 87.0.4280.88 (Official Build) (x86_64)

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.