Fail closed on wrong-series season-pack releases #10

Merged
sascha merged 2 commits from fix/sonarr-pack-series-identity-20260916 into main 2026-09-16 07:19:23 +02:00
Showing only changes of commit 63a48d541a - Show all commits

View file

@ -2,7 +2,7 @@
* @name Sonarr - Trigger Manual Import
* @description Safely trigger Sonarr ManualImport for exactly one processed episode file.
* @author FileFlows + Sascha
* @revision 12
* @revision 13
* @output Import erfolgreich
* @output Fehler
* @param {string} URL Sonarr root URL and port
@ -293,10 +293,24 @@ function resolvePackEpisode(matches, episodePattern, sonarr) {
.map(item => Number(item?.seriesId))
.filter(Boolean)
.filter((value, index, values) => values.indexOf(value) === index);
if (seriesIds.length !== 1) return null;
if (seriesIds.length !== 1) {
Logger.WLog('Tracked season-pack rows point to multiple series; refusing fallback parsing.');
return { conflict: true };
}
try {
const seriesId = seriesIds[0];
const trackedSeries = sonarr.fetchJson(`series/${seriesId}`) || {};
const cleanTitle = normalizeReleaseTitle(trackedSeries.cleanTitle || trackedSeries.title || '');
const normalizedPattern = normalizeReleaseTitle(episodePattern);
if (!cleanTitle || !normalizedPattern.startsWith(cleanTitle)) {
Logger.WLog(
`Tracked release title '${episodePattern}' does not match Sonarr series `
+ `'${trackedSeries.title || seriesId}'; refusing fallback parsing.`
);
return { conflict: true };
}
const query = buildQueryParams({ seriesId });
const episodes = sonarr.fetchJson('episode', query) || [];
const candidates = episodes.filter(item =>