From 791106a7f5b8356b67119300bad245f587f6dc5f Mon Sep 17 00:00:00 2001 From: notfakie <103784113+notfakie@users.noreply.github.com> Date: Thu, 21 Apr 2022 17:22:58 +1200 Subject: [PATCH] fix: only run scheduled mediaserver jobs that apply to the current mediaserver --- server/job/schedule.ts | 134 ++++++++++++++++++++++------------------- 1 file changed, 72 insertions(+), 62 deletions(-) diff --git a/server/job/schedule.ts b/server/job/schedule.ts index 9b70879d7..181d540d3 100644 --- a/server/job/schedule.ts +++ b/server/job/schedule.ts @@ -1,4 +1,5 @@ import schedule from 'node-schedule'; +import { MediaServerType } from '../constants/server'; import downloadTracker from '../lib/downloadtracker'; import { plexFullScanner, plexRecentScanner } from '../lib/scanners/plex'; import { radarrScanner } from '../lib/scanners/radarr'; @@ -21,73 +22,82 @@ export const scheduledJobs: ScheduledJob[] = []; export const startJobs = (): void => { const jobs = getSettings().jobs; + const mediaServerType = getSettings().main.mediaServerType; - // Run recently added plex scan every 5 minutes - scheduledJobs.push({ - id: 'plex-recently-added-scan', - name: 'Plex Recently Added Scan', - type: 'process', - interval: 'short', - job: schedule.scheduleJob(jobs['plex-recently-added-scan'].schedule, () => { - logger.info('Starting scheduled job: Plex Recently Added Scan', { - label: 'Jobs', - }); - plexRecentScanner.run(); - }), - running: () => plexRecentScanner.status().running, - cancelFn: () => plexRecentScanner.cancel(), - }); + if (mediaServerType === MediaServerType.PLEX) { + // Run recently added plex scan every 5 minutes + scheduledJobs.push({ + id: 'plex-recently-added-scan', + name: 'Plex Recently Added Scan', + type: 'process', + interval: 'short', + job: schedule.scheduleJob( + jobs['plex-recently-added-scan'].schedule, + () => { + logger.info('Starting scheduled job: Plex Recently Added Scan', { + label: 'Jobs', + }); + plexRecentScanner.run(); + } + ), + running: () => plexRecentScanner.status().running, + cancelFn: () => plexRecentScanner.cancel(), + }); - // Run full plex scan every 24 hours - scheduledJobs.push({ - id: 'plex-full-scan', - name: 'Plex Full Library Scan', - type: 'process', - interval: 'long', - job: schedule.scheduleJob(jobs['plex-full-scan'].schedule, () => { - logger.info('Starting scheduled job: Plex Full Library Scan', { - label: 'Jobs', - }); - plexFullScanner.run(); - }), - running: () => plexFullScanner.status().running, - cancelFn: () => plexFullScanner.cancel(), - }); - - // Run recently added jellyfin sync every 5 minutes - scheduledJobs.push({ - id: 'jellyfin-recently-added-sync', - name: 'Jellyfin Recently Added Sync', - type: 'process', - interval: 'long', - job: schedule.scheduleJob( - jobs['jellyfin-recently-added-sync'].schedule, - () => { - logger.info('Starting scheduled job: Jellyfin Recently Added Sync', { + // Run full plex scan every 24 hours + scheduledJobs.push({ + id: 'plex-full-scan', + name: 'Plex Full Library Scan', + type: 'process', + interval: 'long', + job: schedule.scheduleJob(jobs['plex-full-scan'].schedule, () => { + logger.info('Starting scheduled job: Plex Full Library Scan', { label: 'Jobs', }); - jobJellyfinRecentSync.run(); - } - ), - running: () => jobJellyfinRecentSync.status().running, - cancelFn: () => jobJellyfinRecentSync.cancel(), - }); + plexFullScanner.run(); + }), + running: () => plexFullScanner.status().running, + cancelFn: () => plexFullScanner.cancel(), + }); + } else if ( + mediaServerType === MediaServerType.JELLYFIN || + mediaServerType === MediaServerType.EMBY + ) { + // Run recently added jellyfin sync every 5 minutes + scheduledJobs.push({ + id: 'jellyfin-recently-added-sync', + name: 'Jellyfin Recently Added Sync', + type: 'process', + interval: 'long', + job: schedule.scheduleJob( + jobs['jellyfin-recently-added-sync'].schedule, + () => { + logger.info('Starting scheduled job: Jellyfin Recently Added Sync', { + label: 'Jobs', + }); + jobJellyfinRecentSync.run(); + } + ), + running: () => jobJellyfinRecentSync.status().running, + cancelFn: () => jobJellyfinRecentSync.cancel(), + }); - // Run full jellyfin sync every 24 hours - scheduledJobs.push({ - id: 'jellyfin-full-sync', - name: 'Jellyfin Full Library Sync', - type: 'process', - interval: 'long', - job: schedule.scheduleJob(jobs['jellyfin-full-sync'].schedule, () => { - logger.info('Starting scheduled job: Jellyfin Full Sync', { - label: 'Jobs', - }); - jobJellyfinFullSync.run(); - }), - running: () => jobJellyfinFullSync.status().running, - cancelFn: () => jobJellyfinFullSync.cancel(), - }); + // Run full jellyfin sync every 24 hours + scheduledJobs.push({ + id: 'jellyfin-full-sync', + name: 'Jellyfin Full Library Sync', + type: 'process', + interval: 'long', + job: schedule.scheduleJob(jobs['jellyfin-full-sync'].schedule, () => { + logger.info('Starting scheduled job: Jellyfin Full Sync', { + label: 'Jobs', + }); + jobJellyfinFullSync.run(); + }), + running: () => jobJellyfinFullSync.status().running, + cancelFn: () => jobJellyfinFullSync.cancel(), + }); + } // Run full radarr scan every 24 hours scheduledJobs.push({