From 5c691dc98437a4cd24560ff625414fe05dd22f89 Mon Sep 17 00:00:00 2001 From: tidusjar Date: Fri, 14 Jan 2022 10:21:54 +0000 Subject: [PATCH] fix(sonarr): :bug: Fixed an issue where we could attempt to add a series to sonarr before sonarr has got all the metadata #4459 --- src/Ombi.Core/Senders/TvSender.cs | 32 +++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/src/Ombi.Core/Senders/TvSender.cs b/src/Ombi.Core/Senders/TvSender.cs index 2f42a12c0..bb2a5d628 100644 --- a/src/Ombi.Core/Senders/TvSender.cs +++ b/src/Ombi.Core/Senders/TvSender.cs @@ -309,6 +309,20 @@ namespace Ombi.Core.Senders private async Task SendToSonarr(ChildRequests model, SonarrSeries result, SonarrSettings s) { + // Check to ensure we have the all the seasons, ensure the Sonarr metadata has grabbed all the data + foreach (var season in model.SeasonRequests) + { + var attempt = 0; + var existingSeason = result.seasons.FirstOrDefault(x => x.seasonNumber == season.SeasonNumber); + while (existingSeason == null && attempt < 5) + { + attempt++; + Logger.LogInformation("There was no season numer {0} in Sonarr for title {1}. Will try again as the metadata did not get created", season.SeasonNumber, model.ParentRequest.Title); + result = await SonarrApi.GetSeriesById(result.id, s.ApiKey, s.FullUri); + await Task.Delay(500); + } + } + var episodesToUpdate = new List(); // Ok, now let's sort out the episodes. @@ -327,10 +341,11 @@ namespace Ombi.Core.Senders await Task.Delay(500); } + var seriesChanges = false; - foreach (var req in model.SeasonRequests) + foreach (var season in model.SeasonRequests) { - foreach (var ep in req.Episodes) + foreach (var ep in season.Episodes) { var sonarrEp = sonarrEpList.FirstOrDefault(x => x.episodeNumber == ep.EpisodeNumber && x.seasonNumber == req.SeasonNumber); @@ -340,11 +355,6 @@ namespace Ombi.Core.Senders episodesToUpdate.Add(sonarrEp); } } - } - var seriesChanges = false; - - foreach (var season in model.SeasonRequests) - { var sonarrEpisodeList = sonarrEpList.Where(x => x.seasonNumber == season.SeasonNumber).ToList(); var sonarrEpCount = sonarrEpisodeList.Count; var ourRequestCount = season.Episodes.Count; @@ -358,13 +368,7 @@ namespace Ombi.Core.Senders //var distinctEpisodes = ourEpisodes.Distinct().ToList(); //var missingEpisodes = Enumerable.Range(distinctEpisodes.Min(), distinctEpisodes.Count).Except(distinctEpisodes); - var existingSeason = - result.seasons.FirstOrDefault(x => x.seasonNumber == season.SeasonNumber); - if (existingSeason == null) - { - Logger.LogError("There was no season numer {0} in Sonarr for title {1}", season.SeasonNumber, model.ParentRequest.Title); - continue; - } + if (sonarrEpCount == ourRequestCount /*|| !missingEpisodes.Any()*/)