diff --git a/server/lib/availabilitySync.ts b/server/lib/availabilitySync.ts index bd01b457..8c7585b3 100644 --- a/server/lib/availabilitySync.ts +++ b/server/lib/availabilitySync.ts @@ -816,6 +816,50 @@ class AvailabilitySync { this.plexSeasonsCache[ratingKey4k] = await this.plexClient?.getChildrenMetadata(ratingKey4k); } + + if (plexMedia) { + if (ratingKey === ratingKey4k) { + plexMedia = undefined; + } + + if ( + plexMedia && + media.mediaType === 'movie' && + !plexMedia.Media?.some( + (mediaItem) => (mediaItem.width ?? 0) >= 2000 + ) + ) { + plexMedia = undefined; + } + + if (plexMedia && media.mediaType === 'tv') { + const cachedSeasons = this.plexSeasonsCache[ratingKey4k]; + if (cachedSeasons?.length) { + let has4kInAnySeason = false; + for (const season of cachedSeasons) { + try { + const episodes = await this.plexClient?.getChildrenMetadata( + season.ratingKey + ); + const has4kEpisode = episodes?.some((episode) => + episode.Media?.some( + (mediaItem) => (mediaItem.width ?? 0) >= 2000 + ) + ); + if (has4kEpisode) { + has4kInAnySeason = true; + break; + } + } catch { + // If we can't fetch episodes for a season, continue checking other seasons + } + } + if (!has4kInAnySeason) { + plexMedia = undefined; + } + } + } + } } if (plexMedia) {