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