mirror of
https://github.com/sct/overseerr.git
synced 2025-09-17 17:24:35 +02:00
fix(servarr): handle servaarr server being unavailable when scanning downloads (#2358)
This commit is contained in:

committed by
GitHub

parent
2ded8f5484
commit
488874fc17
@@ -76,23 +76,32 @@ class DownloadTracker {
|
|||||||
url: RadarrAPI.buildUrl(server, '/api/v3'),
|
url: RadarrAPI.buildUrl(server, '/api/v3'),
|
||||||
});
|
});
|
||||||
|
|
||||||
const queueItems = await radarr.getQueue();
|
try {
|
||||||
|
const queueItems = await radarr.getQueue();
|
||||||
|
|
||||||
this.radarrServers[server.id] = queueItems.map((item) => ({
|
this.radarrServers[server.id] = queueItems.map((item) => ({
|
||||||
externalId: item.movieId,
|
externalId: item.movieId,
|
||||||
estimatedCompletionTime: new Date(item.estimatedCompletionTime),
|
estimatedCompletionTime: new Date(item.estimatedCompletionTime),
|
||||||
mediaType: MediaType.MOVIE,
|
mediaType: MediaType.MOVIE,
|
||||||
size: item.size,
|
size: item.size,
|
||||||
sizeLeft: item.sizeleft,
|
sizeLeft: item.sizeleft,
|
||||||
status: item.status,
|
status: item.status,
|
||||||
timeLeft: item.timeleft,
|
timeLeft: item.timeleft,
|
||||||
title: item.title,
|
title: item.title,
|
||||||
}));
|
}));
|
||||||
|
|
||||||
if (queueItems.length > 0) {
|
if (queueItems.length > 0) {
|
||||||
logger.debug(
|
logger.debug(
|
||||||
`Found ${queueItems.length} item(s) in progress on Radarr server: ${server.name}`,
|
`Found ${queueItems.length} item(s) in progress on Radarr server: ${server.name}`,
|
||||||
{ label: 'Download Tracker' }
|
{ label: 'Download Tracker' }
|
||||||
|
);
|
||||||
|
}
|
||||||
|
} catch {
|
||||||
|
logger.error(
|
||||||
|
`Unable to get queue from Radarr server: ${server.name}`,
|
||||||
|
{
|
||||||
|
label: 'Download Tracker',
|
||||||
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -134,42 +143,51 @@ class DownloadTracker {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Load downloads from Radarr servers
|
// Load downloads from Sonarr servers
|
||||||
Promise.all(
|
Promise.all(
|
||||||
filteredServers.map(async (server) => {
|
filteredServers.map(async (server) => {
|
||||||
if (server.syncEnabled) {
|
if (server.syncEnabled) {
|
||||||
const radarr = new SonarrAPI({
|
const sonarr = new SonarrAPI({
|
||||||
apiKey: server.apiKey,
|
apiKey: server.apiKey,
|
||||||
url: SonarrAPI.buildUrl(server, '/api/v3'),
|
url: SonarrAPI.buildUrl(server, '/api/v3'),
|
||||||
});
|
});
|
||||||
|
|
||||||
const queueItems = await radarr.getQueue();
|
try {
|
||||||
|
const queueItems = await sonarr.getQueue();
|
||||||
|
|
||||||
this.sonarrServers[server.id] = queueItems.map((item) => ({
|
this.sonarrServers[server.id] = queueItems.map((item) => ({
|
||||||
externalId: item.seriesId,
|
externalId: item.seriesId,
|
||||||
estimatedCompletionTime: new Date(item.estimatedCompletionTime),
|
estimatedCompletionTime: new Date(item.estimatedCompletionTime),
|
||||||
mediaType: MediaType.TV,
|
mediaType: MediaType.TV,
|
||||||
size: item.size,
|
size: item.size,
|
||||||
sizeLeft: item.sizeleft,
|
sizeLeft: item.sizeleft,
|
||||||
status: item.status,
|
status: item.status,
|
||||||
timeLeft: item.timeleft,
|
timeLeft: item.timeleft,
|
||||||
title: item.title,
|
title: item.title,
|
||||||
}));
|
}));
|
||||||
|
|
||||||
if (queueItems.length > 0) {
|
if (queueItems.length > 0) {
|
||||||
logger.debug(
|
logger.debug(
|
||||||
`Found ${queueItems.length} item(s) in progress on Sonarr server: ${server.name}`,
|
`Found ${queueItems.length} item(s) in progress on Sonarr server: ${server.name}`,
|
||||||
{ label: 'Download Tracker' }
|
{ label: 'Download Tracker' }
|
||||||
|
);
|
||||||
|
}
|
||||||
|
} catch {
|
||||||
|
logger.error(
|
||||||
|
`Unable to get queue from Sonarr server: ${server.name}`,
|
||||||
|
{
|
||||||
|
label: 'Download Tracker',
|
||||||
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Duplicate this data to matching servers
|
// Duplicate this data to matching servers
|
||||||
const matchingServers = settings.sonarr.filter(
|
const matchingServers = settings.sonarr.filter(
|
||||||
(rs) =>
|
(ss) =>
|
||||||
rs.hostname === server.hostname &&
|
ss.hostname === server.hostname &&
|
||||||
rs.port === server.port &&
|
ss.port === server.port &&
|
||||||
rs.baseUrl === server.baseUrl &&
|
ss.baseUrl === server.baseUrl &&
|
||||||
rs.id !== server.id
|
ss.id !== server.id
|
||||||
);
|
);
|
||||||
|
|
||||||
if (matchingServers.length > 0) {
|
if (matchingServers.length > 0) {
|
||||||
|
Reference in New Issue
Block a user