fix(availability-sync): prevent incorrect season deletion when media server is unreachable (#2302)
This commit is contained in:
@@ -300,7 +300,6 @@ class AvailabilitySync {
|
|||||||
// Sonarr finds that season, we will change the final seasons value
|
// Sonarr finds that season, we will change the final seasons value
|
||||||
// to true.
|
// to true.
|
||||||
const filteredSeasonsMap: Map<number, boolean> = new Map();
|
const filteredSeasonsMap: Map<number, boolean> = new Map();
|
||||||
|
|
||||||
media.seasons
|
media.seasons
|
||||||
.filter(
|
.filter(
|
||||||
(season) =>
|
(season) =>
|
||||||
@@ -311,48 +310,7 @@ class AvailabilitySync {
|
|||||||
filteredSeasonsMap.set(season.seasonNumber, false)
|
filteredSeasonsMap.set(season.seasonNumber, false)
|
||||||
);
|
);
|
||||||
|
|
||||||
// non-4k
|
|
||||||
const finalSeasons: Map<number, boolean> = new Map();
|
|
||||||
|
|
||||||
if (mediaServerType === MediaServerType.PLEX) {
|
|
||||||
plexSeasonsMap.forEach((value, key) => {
|
|
||||||
finalSeasons.set(key, value);
|
|
||||||
});
|
|
||||||
|
|
||||||
filteredSeasonsMap.forEach((value, key) => {
|
|
||||||
if (!finalSeasons.has(key)) {
|
|
||||||
finalSeasons.set(key, value);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
sonarrSeasonsMap.forEach((value, key) => {
|
|
||||||
if (!finalSeasons.has(key)) {
|
|
||||||
finalSeasons.set(key, value);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else if (
|
|
||||||
mediaServerType === MediaServerType.JELLYFIN ||
|
|
||||||
mediaServerType === MediaServerType.EMBY
|
|
||||||
) {
|
|
||||||
jellyfinSeasonsMap.forEach((value, key) => {
|
|
||||||
finalSeasons.set(key, value);
|
|
||||||
});
|
|
||||||
|
|
||||||
filteredSeasonsMap.forEach((value, key) => {
|
|
||||||
if (!finalSeasons.has(key)) {
|
|
||||||
finalSeasons.set(key, value);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
sonarrSeasonsMap.forEach((value, key) => {
|
|
||||||
if (!finalSeasons.has(key)) {
|
|
||||||
finalSeasons.set(key, value);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
const filteredSeasonsMap4k: Map<number, boolean> = new Map();
|
const filteredSeasonsMap4k: Map<number, boolean> = new Map();
|
||||||
|
|
||||||
media.seasons
|
media.seasons
|
||||||
.filter(
|
.filter(
|
||||||
(season) =>
|
(season) =>
|
||||||
@@ -363,44 +321,32 @@ class AvailabilitySync {
|
|||||||
filteredSeasonsMap4k.set(season.seasonNumber, false)
|
filteredSeasonsMap4k.set(season.seasonNumber, false)
|
||||||
);
|
);
|
||||||
|
|
||||||
// 4k
|
let finalSeasons: Map<number, boolean>;
|
||||||
const finalSeasons4k: Map<number, boolean> = new Map();
|
let finalSeasons4k: Map<number, boolean>;
|
||||||
|
|
||||||
if (mediaServerType === MediaServerType.PLEX) {
|
if (mediaServerType === MediaServerType.PLEX) {
|
||||||
plexSeasonsMap4k.forEach((value, key) => {
|
finalSeasons = new Map([
|
||||||
finalSeasons4k.set(key, value);
|
...filteredSeasonsMap,
|
||||||
});
|
...plexSeasonsMap,
|
||||||
|
...sonarrSeasonsMap,
|
||||||
filteredSeasonsMap4k.forEach((value, key) => {
|
]);
|
||||||
if (!finalSeasons4k.has(key)) {
|
finalSeasons4k = new Map([
|
||||||
finalSeasons4k.set(key, value);
|
...filteredSeasonsMap4k,
|
||||||
}
|
...plexSeasonsMap4k,
|
||||||
});
|
...sonarrSeasonsMap4k,
|
||||||
|
]);
|
||||||
sonarrSeasonsMap4k.forEach((value, key) => {
|
} else {
|
||||||
if (!finalSeasons4k.has(key)) {
|
// Jellyfin/Emby
|
||||||
finalSeasons4k.set(key, value);
|
finalSeasons = new Map([
|
||||||
}
|
...filteredSeasonsMap,
|
||||||
});
|
...jellyfinSeasonsMap,
|
||||||
} else if (
|
...sonarrSeasonsMap,
|
||||||
mediaServerType === MediaServerType.JELLYFIN ||
|
]);
|
||||||
mediaServerType === MediaServerType.EMBY
|
finalSeasons4k = new Map([
|
||||||
) {
|
...filteredSeasonsMap4k,
|
||||||
jellyfinSeasonsMap4k.forEach((value, key) => {
|
...jellyfinSeasonsMap4k,
|
||||||
finalSeasons4k.set(key, value);
|
...sonarrSeasonsMap4k,
|
||||||
});
|
]);
|
||||||
|
|
||||||
filteredSeasonsMap4k.forEach((value, key) => {
|
|
||||||
if (!finalSeasons4k.has(key)) {
|
|
||||||
finalSeasons4k.set(key, value);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
sonarrSeasonsMap4k.forEach((value, key) => {
|
|
||||||
if (!finalSeasons4k.has(key)) {
|
|
||||||
finalSeasons4k.set(key, value);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (
|
if (
|
||||||
@@ -993,8 +939,8 @@ class AvailabilitySync {
|
|||||||
existsInJellyfin = true;
|
existsInJellyfin = true;
|
||||||
}
|
}
|
||||||
} catch (ex) {
|
} catch (ex) {
|
||||||
if (!ex.message.includes('404' || '500')) {
|
if (!ex.message.includes('404') && !ex.message.includes('500')) {
|
||||||
existsInJellyfin = false;
|
existsInJellyfin = true;
|
||||||
preventSeasonSearch = true;
|
preventSeasonSearch = true;
|
||||||
logger.debug(
|
logger.debug(
|
||||||
`Failure retrieving the ${is4k ? '4K' : 'non-4K'} ${
|
`Failure retrieving the ${is4k ? '4K' : 'non-4K'} ${
|
||||||
|
|||||||
Reference in New Issue
Block a user