From c9f52afe0fa3f77aa4dd87c8681c4dfa23c72da5 Mon Sep 17 00:00:00 2001 From: Brandon Cohen Date: Wed, 2 Apr 2025 19:02:44 -0500 Subject: [PATCH] fix: correct specials affecting availability status (#4092) * fix: remove specials affecting availability status * refactor: add comments for scanner --- server/lib/scanners/baseScanner.ts | 37 +++++++++++++++++++----------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/server/lib/scanners/baseScanner.ts b/server/lib/scanners/baseScanner.ts index f0f3db7e6..64120fffa 100644 --- a/server/lib/scanners/baseScanner.ts +++ b/server/lib/scanners/baseScanner.ts @@ -324,19 +324,25 @@ class BaseScanner { } } + // We want to skip specials when checking if a show is available const isAllStandardSeasons = seasons.length && - seasons.every( - (season) => - season.episodes === season.totalEpisodes && season.episodes > 0 - ); + seasons + .filter((season) => season.seasonNumber !== 0) + .every( + (season) => + season.episodes === season.totalEpisodes && season.episodes > 0 + ); const isAll4kSeasons = seasons.length && - seasons.every( - (season) => - season.episodes4k === season.totalEpisodes && season.episodes4k > 0 - ); + seasons + .filter((season) => season.seasonNumber !== 0) + .every( + (season) => + season.episodes4k === season.totalEpisodes && + season.episodes4k > 0 + ); if (media) { media.seasons = [...media.seasons, ...newSeasons]; @@ -398,15 +404,20 @@ class BaseScanner { } // If the show is already available, and there are no new seasons, dont adjust - // the status + // the status. Skip specials when performing availability check const shouldStayAvailable = media.status === MediaStatus.AVAILABLE && - newSeasons.filter((season) => season.status !== MediaStatus.UNKNOWN) - .length === 0; + newSeasons.filter( + (season) => + season.status !== MediaStatus.UNKNOWN && season.seasonNumber !== 0 + ).length === 0; const shouldStayAvailable4k = media.status4k === MediaStatus.AVAILABLE && - newSeasons.filter((season) => season.status4k !== MediaStatus.UNKNOWN) - .length === 0; + newSeasons.filter( + (season) => + season.status4k !== MediaStatus.UNKNOWN && + season.seasonNumber !== 0 + ).length === 0; media.status = isAllStandardSeasons || shouldStayAvailable