Fail closed on wrong-series season-pack releases #10
1 changed files with 16 additions and 2 deletions
|
|
@ -2,7 +2,7 @@
|
||||||
* @name Sonarr - Trigger Manual Import
|
* @name Sonarr - Trigger Manual Import
|
||||||
* @description Safely trigger Sonarr ManualImport for exactly one processed episode file.
|
* @description Safely trigger Sonarr ManualImport for exactly one processed episode file.
|
||||||
* @author FileFlows + Sascha
|
* @author FileFlows + Sascha
|
||||||
* @revision 12
|
* @revision 13
|
||||||
* @output Import erfolgreich
|
* @output Import erfolgreich
|
||||||
* @output Fehler
|
* @output Fehler
|
||||||
* @param {string} URL Sonarr root URL and port
|
* @param {string} URL Sonarr root URL and port
|
||||||
|
|
@ -293,10 +293,24 @@ function resolvePackEpisode(matches, episodePattern, sonarr) {
|
||||||
.map(item => Number(item?.seriesId))
|
.map(item => Number(item?.seriesId))
|
||||||
.filter(Boolean)
|
.filter(Boolean)
|
||||||
.filter((value, index, values) => values.indexOf(value) === index);
|
.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 {
|
try {
|
||||||
const seriesId = seriesIds[0];
|
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 query = buildQueryParams({ seriesId });
|
||||||
const episodes = sonarr.fetchJson('episode', query) || [];
|
const episodes = sonarr.fetchJson('episode', query) || [];
|
||||||
const candidates = episodes.filter(item =>
|
const candidates = episodes.filter(item =>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue