From 63dc27d400ecc80a18442fc42dd417cc03c3f9e1 Mon Sep 17 00:00:00 2001 From: Gauthier Date: Mon, 31 Mar 2025 10:40:30 +0200 Subject: [PATCH] fix(job): handle media removal for 4k on the same server (#1543) This PR fixes a bug where the avaibility sync job was not removing properly 4k items when the same Radarr server was used for both non-4k and 4k media. --- server/api/servarr/radarr.ts | 32 ++++++++++++++++++++++++++++++++ server/lib/availabilitySync.ts | 6 +++++- 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/server/api/servarr/radarr.ts b/server/api/servarr/radarr.ts index 35d24024f..b5e12d2ec 100644 --- a/server/api/servarr/radarr.ts +++ b/server/api/servarr/radarr.ts @@ -29,6 +29,38 @@ export interface RadarrMovie { added: string; hasFile: boolean; tags: number[]; + movieFile?: { + id: number; + movieId: number; + relativePath?: string; + path?: string; + size: number; + dateAdded: string; + sceneName?: string; + releaseGroup?: string; + edition?: string; + indexerFlags?: number; + mediaInfo: { + id: number; + audioBitrate: number; + audioChannels: number; + audioCodec?: string; + audioLanguages?: string; + audioStreamCount: number; + videoBitDepth: number; + videoBitrate: number; + videoCodec?: string; + videoFps: number; + videoDynamicRange?: string; + videoDynamicRangeType?: string; + resolution?: string; + runTime?: string; + scanType?: string; + subtitles?: string; + }; + originalFilePath?: string; + qualityCutoffNotMet: boolean; + }; } class RadarrAPI extends ServarrBase<{ movieId: number }> { diff --git a/server/lib/availabilitySync.ts b/server/lib/availabilitySync.ts index 0fdfd6276..3f78551e0 100644 --- a/server/lib/availabilitySync.ts +++ b/server/lib/availabilitySync.ts @@ -747,7 +747,11 @@ class AvailabilitySync { } if (radarr && radarr.hasFile) { - existsInRadarr = true; + const resolution = + radarr?.movieFile?.mediaInfo?.resolution?.split('x'); + const is4kMovie = + resolution?.length === 2 && Number(resolution[0]) >= 2000; + existsInRadarr = is4k ? is4kMovie : !is4kMovie; } } catch (ex) { if (!ex.message.includes('404')) {