fix: only run scheduled mediaserver jobs that apply to the current mediaserver
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
import schedule from 'node-schedule';
|
import schedule from 'node-schedule';
|
||||||
|
import { MediaServerType } from '../constants/server';
|
||||||
import downloadTracker from '../lib/downloadtracker';
|
import downloadTracker from '../lib/downloadtracker';
|
||||||
import { plexFullScanner, plexRecentScanner } from '../lib/scanners/plex';
|
import { plexFullScanner, plexRecentScanner } from '../lib/scanners/plex';
|
||||||
import { radarrScanner } from '../lib/scanners/radarr';
|
import { radarrScanner } from '../lib/scanners/radarr';
|
||||||
@@ -21,73 +22,82 @@ export const scheduledJobs: ScheduledJob[] = [];
|
|||||||
|
|
||||||
export const startJobs = (): void => {
|
export const startJobs = (): void => {
|
||||||
const jobs = getSettings().jobs;
|
const jobs = getSettings().jobs;
|
||||||
|
const mediaServerType = getSettings().main.mediaServerType;
|
||||||
|
|
||||||
// Run recently added plex scan every 5 minutes
|
if (mediaServerType === MediaServerType.PLEX) {
|
||||||
scheduledJobs.push({
|
// Run recently added plex scan every 5 minutes
|
||||||
id: 'plex-recently-added-scan',
|
scheduledJobs.push({
|
||||||
name: 'Plex Recently Added Scan',
|
id: 'plex-recently-added-scan',
|
||||||
type: 'process',
|
name: 'Plex Recently Added Scan',
|
||||||
interval: 'short',
|
type: 'process',
|
||||||
job: schedule.scheduleJob(jobs['plex-recently-added-scan'].schedule, () => {
|
interval: 'short',
|
||||||
logger.info('Starting scheduled job: Plex Recently Added Scan', {
|
job: schedule.scheduleJob(
|
||||||
label: 'Jobs',
|
jobs['plex-recently-added-scan'].schedule,
|
||||||
});
|
() => {
|
||||||
plexRecentScanner.run();
|
logger.info('Starting scheduled job: Plex Recently Added Scan', {
|
||||||
}),
|
label: 'Jobs',
|
||||||
running: () => plexRecentScanner.status().running,
|
});
|
||||||
cancelFn: () => plexRecentScanner.cancel(),
|
plexRecentScanner.run();
|
||||||
});
|
}
|
||||||
|
),
|
||||||
|
running: () => plexRecentScanner.status().running,
|
||||||
|
cancelFn: () => plexRecentScanner.cancel(),
|
||||||
|
});
|
||||||
|
|
||||||
// Run full plex scan every 24 hours
|
// Run full plex scan every 24 hours
|
||||||
scheduledJobs.push({
|
scheduledJobs.push({
|
||||||
id: 'plex-full-scan',
|
id: 'plex-full-scan',
|
||||||
name: 'Plex Full Library Scan',
|
name: 'Plex Full Library Scan',
|
||||||
type: 'process',
|
type: 'process',
|
||||||
interval: 'long',
|
interval: 'long',
|
||||||
job: schedule.scheduleJob(jobs['plex-full-scan'].schedule, () => {
|
job: schedule.scheduleJob(jobs['plex-full-scan'].schedule, () => {
|
||||||
logger.info('Starting scheduled job: Plex Full Library Scan', {
|
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', {
|
|
||||||
label: 'Jobs',
|
label: 'Jobs',
|
||||||
});
|
});
|
||||||
jobJellyfinRecentSync.run();
|
plexFullScanner.run();
|
||||||
}
|
}),
|
||||||
),
|
running: () => plexFullScanner.status().running,
|
||||||
running: () => jobJellyfinRecentSync.status().running,
|
cancelFn: () => plexFullScanner.cancel(),
|
||||||
cancelFn: () => jobJellyfinRecentSync.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
|
// Run full jellyfin sync every 24 hours
|
||||||
scheduledJobs.push({
|
scheduledJobs.push({
|
||||||
id: 'jellyfin-full-sync',
|
id: 'jellyfin-full-sync',
|
||||||
name: 'Jellyfin Full Library Sync',
|
name: 'Jellyfin Full Library Sync',
|
||||||
type: 'process',
|
type: 'process',
|
||||||
interval: 'long',
|
interval: 'long',
|
||||||
job: schedule.scheduleJob(jobs['jellyfin-full-sync'].schedule, () => {
|
job: schedule.scheduleJob(jobs['jellyfin-full-sync'].schedule, () => {
|
||||||
logger.info('Starting scheduled job: Jellyfin Full Sync', {
|
logger.info('Starting scheduled job: Jellyfin Full Sync', {
|
||||||
label: 'Jobs',
|
label: 'Jobs',
|
||||||
});
|
});
|
||||||
jobJellyfinFullSync.run();
|
jobJellyfinFullSync.run();
|
||||||
}),
|
}),
|
||||||
running: () => jobJellyfinFullSync.status().running,
|
running: () => jobJellyfinFullSync.status().running,
|
||||||
cancelFn: () => jobJellyfinFullSync.cancel(),
|
cancelFn: () => jobJellyfinFullSync.cancel(),
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
// Run full radarr scan every 24 hours
|
// Run full radarr scan every 24 hours
|
||||||
scheduledJobs.push({
|
scheduledJobs.push({
|
||||||
|
|||||||
Reference in New Issue
Block a user