* perf(watchlist): add E-Tag caching to Plex watchlist requests
* refactor(watchlist): increase frequency of watchlist requests
* fix: sync watchlist every 3 min instead of 3 sec
* fix: importing friends
update checkUserAccess to use getUsers
* refactor(server/api/plextv.ts): clean up
removed unused getFriends function, and its interface.
renamed friends variable.
* fix: added extra check for unmonitored movies in radarr
* feat: created new radarr/sonarr routes to grab existing series data
* refactor: updated job routes to check by external service id
* fix: season check will now also look at episode file count
* feat: add availability synchronization job
fix#377
* fix: feedback on PR
* perf: use pagination for Media Availability Synchronization job
The original approach loaded all media items from the database at once. With large libraries, this
could lead to performance issues. We're now using a paginated approach with a page size of 50.
* feat: updated the availability sync to work with 4k
* fix: corrected detection of media in plex
* refactor: code cleanup and minimized unnecessary calls
* fix: if media is not found, media check will continue
* fix: if non-4k or 4k show media is updated, seasons and request is now properly updated
* refactor: consolidated media updater into one function
* fix: season requests are now removed if season has been deleted
* refactor: removed joincolumn
* fix: makes sure we will always check radarr/sonarr to see if media exists
* fix: media will now only be updated to unavailable and deletion will be prevented
* fix: changed types in Media entity
* fix: prevent season deletion in preference of setting season to unknown
---------
Co-authored-by: Jari Zwarts <jari@oberon.nl>
Co-authored-by: Sebastian Kappen <sebastian@kappen.dev>
* fix(ui): hide available media on person page
* fix(ui): set correct label for image cache settings
* fix(ui): disable status badge tooltip for collections
* fix(ui): replace empty space when no episodes in season
* fix: suggested changes
* fix(jobs): set watchlist sync to short interval
* chore: run i18n:extract
* fix: suggested changes
* fix(tautulli): fetch additional user history as necessary to return 20 unique media
* refactor: rename var for clarity
* refactor: make single DB query for recently watched media
* fix: resolve query builder weirdness
* refactor: use find instead of qb
* refactor: minor refactor
* fix: also find 4K rating keys
* feat: media/user watch history data via Tautulli
* fix(frontend): only display slideover cog button if there is media to manage
* fix(lang): tweak permission denied messages
* refactor: reorder Media section in slideover
* refactor: use new Tautulli stats API
* fix(frontend): do not attempt to fetch data when user lacks req perms
* fix: remove unneccessary get_user requests
* feat(frontend): display user avatars
* feat: add external URL setting
* feat: add play counts for past week/month
* fix(lang): tweak strings
Co-authored-by: Ryan Cohen <ryan@sct.dev>
* feat(api): allow importing of only selected Plex users
* feat(frontend): modal for importing Plex users
* feat: add alert if 'Enable New Plex Sign-In' setting is enabled
* refactor: fetch all existing Plex users in a single DB query
Co-authored-by: Ryan Cohen <ryan@sct.dev>
* feat(search): search by id
This adds the ability to search by ID (starting with TMDb ID).
Since there doesn't seem to be way of searching across movies, tv and persons,
I have to search through all 3 and use the first one in the order: movie -> tv -> person
Searching by ID is triggered using a 'prefix' just like in the *arrs.
* fix: missed some refactoring
* feat(search): use locale language
* feat(search): search using imdb id
* feat(search): search using tvdb id
* fix: alias type import
* fix: missed some refactoring
* fix(search): account for id being a string
* feat(search): account for movies/tvs/persons with the same id
* feat(search): remove non-null assertion
Co-authored-by: Ryan Cohen <ryan@sct.dev>
* feat(servarr): auto fill base url when testing service if missing
This will fill the base URL of the *arr service only if it's missing and the base URL hasn't been
provided beforehand
* fix(servarr): replace redundant check
* fix(servarr): suggested changes
* feat(lang): add Greek & Polish display languages
Also:
* rename zh-TW display language to 繁體中文
* fix plurality of AvailableLocale type name
* consistently use 'en' as fallback/default language
* revert(lang): remove Polish display language due to lack of translation activity