From 37c8229061d8533ce76f5e71fadfe47e01324f26 Mon Sep 17 00:00:00 2001 From: Gronod Date: Sun, 17 May 2026 17:19:39 +0100 Subject: [PATCH] fix: read episodeNumber from nested episode object in Sonarr records MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sonarr queue and history records do not expose episodeNumber at the top level — it is only present inside the nested episode object (record.episode.episodeNumber). Same for seasonNumber. The original extractEpisode() read record.episodeNumber which was always undefined, so gatherEpisodes() always returned an empty array. Fix: prefer the nested episode object fields, falling back to the top-level fields for forward-compatibility. --- server/routes/dashboard.js | 7 ++++--- server/routes/history.js | 7 ++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/server/routes/dashboard.js b/server/routes/dashboard.js index a78d575..596c712 100644 --- a/server/routes/dashboard.js +++ b/server/routes/dashboard.js @@ -97,10 +97,11 @@ function getRadarrLink(movie) { // Extract episode info from a Sonarr queue/history record. // Returns { season, episode, title } or null if data is missing. function extractEpisode(record) { - const s = record.seasonNumber; - const e = record.episodeNumber; + const ep = record.episode || {}; + const s = ep.seasonNumber != null ? ep.seasonNumber : record.seasonNumber; + const e = ep.episodeNumber != null ? ep.episodeNumber : record.episodeNumber; if (s == null || e == null) return null; - const title = record.episode && record.episode.title ? record.episode.title : null; + const title = ep.title || null; return { season: s, episode: e, title }; } diff --git a/server/routes/history.js b/server/routes/history.js index aeb1dfb..a4c6a0f 100644 --- a/server/routes/history.js +++ b/server/routes/history.js @@ -84,10 +84,11 @@ function buildTagBadges(allTags, embyUserMap) { // Extract episode info from a Sonarr history record. function extractEpisode(record) { - const s = record.seasonNumber; - const e = record.episodeNumber; + const ep = record.episode || {}; + const s = ep.seasonNumber != null ? ep.seasonNumber : record.seasonNumber; + const e = ep.episodeNumber != null ? ep.episodeNumber : record.episodeNumber; if (s == null || e == null) return null; - const title = record.episode && record.episode.title ? record.episode.title : null; + const title = ep.title || null; return { season: s, episode: e, title }; }