From b46a7d8804fef80510e25fd802ddf8501bdfe04c Mon Sep 17 00:00:00 2001 From: 0xsysr3ll <0xsysr3ll@pm.me> Date: Tue, 13 Jan 2026 23:37:34 +0100 Subject: [PATCH] fix(availability-sync): refine 4k media availability checks for both movies and TV shows Signed-off-by: 0xsysr3ll <0xsysr3ll@pm.me> --- server/lib/availabilitySync.ts | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/server/lib/availabilitySync.ts b/server/lib/availabilitySync.ts index 493fc8553..282b7711e 100644 --- a/server/lib/availabilitySync.ts +++ b/server/lib/availabilitySync.ts @@ -881,21 +881,27 @@ class AvailabilitySync { await this.plexClient?.getChildrenMetadata(ratingKey4k); } - if (plexMedia && media.mediaType === 'movie') { - const has4kByWidth = plexMedia.Media?.some( - (mediaItem) => (mediaItem.width ?? 0) >= 2000 - ); - - if (is4k) { - if (ratingKey === ratingKey4k || !has4kByWidth) { - plexMedia = undefined; - } - } else { - const hasNon4kByWidth = plexMedia.Media?.some( - (mediaItem) => - (mediaItem.width ?? 0) < 2000 && (mediaItem.width ?? 0) > 0 + if (plexMedia) { + if (media.mediaType === 'movie') { + const has4kByWidth = plexMedia.Media?.some( + (mediaItem) => (mediaItem.width ?? 0) >= 2000 ); - if (!hasNon4kByWidth && has4kByWidth) { + + if (is4k) { + if (ratingKey === ratingKey4k || !has4kByWidth) { + plexMedia = undefined; + } + } else { + const hasNon4kByWidth = plexMedia.Media?.some( + (mediaItem) => + (mediaItem.width ?? 0) < 2000 && (mediaItem.width ?? 0) > 0 + ); + if (!hasNon4kByWidth && has4kByWidth) { + plexMedia = undefined; + } + } + } else if (media.mediaType === 'tv' && is4k) { + if (ratingKey === ratingKey4k) { plexMedia = undefined; } }