From 8c38987d923af784a6d59de3b2eb98896c01161b Mon Sep 17 00:00:00 2001 From: advplyr Date: Tue, 22 Jul 2025 14:44:36 -0500 Subject: [PATCH] Fix podcast episode track index null in playback session --- server/controllers/SessionController.js | 7 ++++++- server/models/PodcastEpisode.js | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/server/controllers/SessionController.js b/server/controllers/SessionController.js index 7160eace..ed662ee8 100644 --- a/server/controllers/SessionController.js +++ b/server/controllers/SessionController.js @@ -288,7 +288,12 @@ class SessionController { return res.sendStatus(404) } - const audioTrack = playbackSession.audioTracks.find((t) => t.index === audioTrackIndex) + let audioTrack = playbackSession.audioTracks.find((t) => toNumber(t.index, 1) === audioTrackIndex) + + // Support clients passing 0 or 1 for podcast episode audio track index (handles old episodes pre-v2.21.0 having null index) + if (!audioTrack && playbackSession.mediaType === 'podcast' && audioTrackIndex === 0) { + audioTrack = playbackSession.audioTracks[0] + } if (!audioTrack) { Logger.error(`[SessionController] Unable to find audio track with index=${audioTrackIndex}`) return res.sendStatus(404) diff --git a/server/models/PodcastEpisode.js b/server/models/PodcastEpisode.js index 27e702a1..996f55f5 100644 --- a/server/models/PodcastEpisode.js +++ b/server/models/PodcastEpisode.js @@ -185,6 +185,7 @@ class PodcastEpisode extends Model { const track = structuredClone(this.audioFile) track.startOffset = 0 track.title = this.audioFile.metadata.filename + track.index = 1 // Podcast episodes only have one track track.contentUrl = `/api/items/${libraryItemId}/file/${track.ino}` return track }