diff --git a/src/Ombi.Api.SickRage/ISickRageApi.cs b/src/Ombi.Api.SickRage/ISickRageApi.cs index 1b33344fe..d370816f4 100644 --- a/src/Ombi.Api.SickRage/ISickRageApi.cs +++ b/src/Ombi.Api.SickRage/ISickRageApi.cs @@ -11,7 +11,7 @@ namespace Ombi.Api.SickRage Task Ping(string apiKey, string baseUrl); Task VerifyShowHasLoaded(int tvdbId, string apiKey, string baseUrl); Task GetShow(int tvdbid, string apikey, string baseUrl); - Task SetEpisodeStatus(string apiKey, string baseUrl, int tvdbid, string status, + Task SetEpisodeStatus(string apiKey, string baseUrl, int tvdbid, string status, int season, int episode = -1); Task GetEpisodesForSeason(int tvdbid, int season, string apikey, string baseUrl); Task GetSeasonList(int tvdbId, string apikey, string baseurl); diff --git a/src/Ombi.Api.SickRage/Models/SickRageEpisodeStatus.cs b/src/Ombi.Api.SickRage/Models/SickRageEpisodeStatus.cs index 6fa76adb2..4f131d5e3 100644 --- a/src/Ombi.Api.SickRage/Models/SickRageEpisodeStatus.cs +++ b/src/Ombi.Api.SickRage/Models/SickRageEpisodeStatus.cs @@ -7,6 +7,13 @@ public string result { get; set; } } + public class SickRageEpisodeSetStatus + { + public Data data { get; set; } + public string message { get; set; } + public string result { get; set; } + } + public class Data { public int episode { get; set; } diff --git a/src/Ombi.Api.SickRage/Models/SickRageStatus.cs b/src/Ombi.Api.SickRage/Models/SickRageStatus.cs index fcfd53310..fd6fa72d6 100644 --- a/src/Ombi.Api.SickRage/Models/SickRageStatus.cs +++ b/src/Ombi.Api.SickRage/Models/SickRageStatus.cs @@ -4,6 +4,6 @@ { public const string Wanted = "wanted"; public const string Skipped = "skipped"; - public const string Ignored = "Ignored"; + public const string Ignored = "ignored"; } } \ No newline at end of file diff --git a/src/Ombi.Api.SickRage/SickRageApi.cs b/src/Ombi.Api.SickRage/SickRageApi.cs index 2bebb4989..b8c20d8d4 100644 --- a/src/Ombi.Api.SickRage/SickRageApi.cs +++ b/src/Ombi.Api.SickRage/SickRageApi.cs @@ -32,6 +32,10 @@ namespace Ombi.Api.SickRage request.AddQueryString("tvdbid", tvdbId.ToString()); request.AddQueryString("status", status); + if (string.IsNullOrEmpty(quality)) + { + quality = "default"; + } if (!quality.Equals("default", StringComparison.CurrentCultureIgnoreCase)) { request.AddQueryString("initial", quality); @@ -88,7 +92,7 @@ namespace Ombi.Api.SickRage /// The episode number is optional, if not supplied it will set the whole season as the status passed in /// /// - public async Task SetEpisodeStatus(string apiKey, string baseUrl, int tvdbid, string status, int season, int episode = -1) + public async Task SetEpisodeStatus(string apiKey, string baseUrl, int tvdbid, string status, int season, int episode = -1) { var request = new Request($"/api/{apiKey}/?cmd=episode.setstatus", baseUrl, HttpMethod.Get); request.AddQueryString("tvdbid", tvdbid.ToString()); @@ -100,7 +104,7 @@ namespace Ombi.Api.SickRage request.AddQueryString("episode", episode.ToString()); } - return await _api.Request(request); + return await _api.Request(request); } public async Task GetSeasonList(int tvdbId, string apikey, string baseurl) diff --git a/src/Ombi.Core/Senders/TvSender.cs b/src/Ombi.Core/Senders/TvSender.cs index 97728da07..cff86af4f 100644 --- a/src/Ombi.Core/Senders/TvSender.cs +++ b/src/Ombi.Core/Senders/TvSender.cs @@ -19,7 +19,7 @@ namespace Ombi.Core.Senders public class TvSender : ITvSender { public TvSender(ISonarrApi sonarrApi, ILogger log, ISettingsService sonarrSettings, - ISettingsService dog, IDogNzbApi dogApi, ISettingsService srSettings, + ISettingsService dog, IDogNzbApi dogApi, ISettingsService srSettings, ISickRageApi srApi) { SonarrApi = sonarrApi; @@ -111,7 +111,7 @@ namespace Ombi.Core.Senders { return null; } - if(string.IsNullOrEmpty(s.ApiKey)) + if (string.IsNullOrEmpty(s.ApiKey)) { return null; } @@ -272,13 +272,16 @@ namespace Ombi.Core.Senders qualityId = settings.QualityProfile; } } + else + { + qualityId = settings.QualityProfile; + } // Check if the show exists var existingShow = await SickRageApi.GetShow(tvdbid, settings.ApiKey, settings.FullUri); - if (existingShow == null) + if (existingShow.message.Equals("Show not found", StringComparison.CurrentCultureIgnoreCase)) { - var addResult = await SickRageApi.AddSeries(model.ParentRequest.TvDbId, SickRageStatus.Wanted, - qualityId, + var addResult = await SickRageApi.AddSeries(model.ParentRequest.TvDbId, qualityId, SickRageStatus.Ignored, settings.ApiKey, settings.FullUri); Logger.LogDebug("Added the show (tvdbid) {0}. The result is '{2}' : '{3}'", tvdbid, addResult.result, addResult.message); @@ -292,6 +295,12 @@ namespace Ombi.Core.Senders foreach (var seasonRequests in model.SeasonRequests) { var srEpisodes = await SickRageApi.GetEpisodesForSeason(tvdbid, seasonRequests.SeasonNumber, settings.ApiKey, settings.FullUri); + while (srEpisodes.message.Equals("Show not found", StringComparison.CurrentCultureIgnoreCase) && srEpisodes.data.Count <= 0) + { + await Task.Delay(TimeSpan.FromSeconds(1)); + srEpisodes = await SickRageApi.GetEpisodesForSeason(tvdbid, seasonRequests.SeasonNumber, settings.ApiKey, settings.FullUri); + } + var totalSrEpisodes = srEpisodes.data.Count; if (totalSrEpisodes == seasonRequests.Episodes.Count)