From 64339e5f0374f8490e685e5c086e088bb7fd737e Mon Sep 17 00:00:00 2001 From: darmiel <71837281+darmiel@users.noreply.github.com> Date: Sun, 4 Dec 2022 00:20:32 +0100 Subject: [PATCH] fix: count combined episodes Jellyfin allows combined episodes, like `S01E01-E02`, but seasons containing such episodes are only recognized as `Partially Available`. This commit should fix that. --- server/api/jellyfin.ts | 1 + server/job/jellyfinsync/index.ts | 17 ++++++++++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/server/api/jellyfin.ts b/server/api/jellyfin.ts index 79b0778a9..8718f2296 100644 --- a/server/api/jellyfin.ts +++ b/server/api/jellyfin.ts @@ -38,6 +38,7 @@ export interface JellyfinLibraryItem { SeasonId?: string; SeasonName?: string; IndexNumber?: number; + IndexNumberEnd?: number; ParentIndexNumber?: number; MediaType: string; } diff --git a/server/job/jellyfinsync/index.ts b/server/job/jellyfinsync/index.ts index 85c8dcc58..9863f0659 100644 --- a/server/job/jellyfinsync/index.ts +++ b/server/job/jellyfinsync/index.ts @@ -257,8 +257,19 @@ class JobJellyfinSync { //use for loop to make sure this loop _completes_ in full //before the next section for (const episode of episodes) { + let episodeCount = 1; + + // count number of combined episodes + if ( + episode.IndexNumber !== undefined && + episode.IndexNumberEnd !== undefined + ) { + episodeCount = + episode.IndexNumberEnd - episode.IndexNumber + 1; + } + if (!this.enable4kShow) { - totalStandard++; + totalStandard += episodeCount; } else { const ExtendedEpisodeData = await this.jfClient.getItemData( episode.Id @@ -268,10 +279,10 @@ class JobJellyfinSync { return MediaSource.MediaStreams.some((MediaStream) => { if (MediaStream.Type === 'Video') { if (MediaStream.Width ?? 0 < 2000) { - totalStandard++; + totalStandard += episodeCount; } } else { - total4k++; + total4k += episodeCount; } }); });