* feat(jobs): backend implementation
* feat(jobs): initial frontend implementation
* feat(jobs): store job settings as Record
* feat(jobs): use heroicons/react instead of inline svgs
* feat(jobs): use presets instead of cron expressions
* feat(jobs): ran `yarn i18n:extract`
* feat(jobs): suggested changes
- use job ids in settings
- add intervalDuration to jobs to allow choosing only minutes or hours for the job schedule
- move job schedule defaults to settings.json
- better TS types for jobs in settings cache component
- make suggested changes to wording
- plural form for label when job schedule can be defined in minutes
- add fixed job interval duration
- add predefined interval choices for minutes and hours
- add new schema for job to overseerr api
* feat(jobs): required change for CI to not fail
* feat(jobs): suggested changes
* fix(jobs): revert offending type refactor
* feat: map AniDB IDs from Hama agent to tvdb/tmdb/imdb IDs
re #453
* refactor: removes sync job for AnimeList, load mapping on demand
* refactor: addressing review comments, using typescript types for xml parsing
* refactor: make sure sync job does not update create same tvshow/movie twice
Hama agent can have same tvdbid it for different library items - for example
when user stores different seasons for same tv show separately. This change
adds "AsyncLock" that guarantees code in callback runs for same id fully,
before running same callback next time.
* refactor: do not use season 0 tvdbid for tvshow from mapping file
* refactor: support multiple imdb mappings for same anidb entry
* refactor: add debug log for missing tvdb entries in tmdb lookups from anidb/hama agent
With this change, plex sync will now process 20 items at a time every 4 seconds. (About double its
previous speed). We will see how much faster we can push this in the future.