From c9d2b8fc133ac0296c25f6b1ec9599d99cc1c77c Mon Sep 17 00:00:00 2001 From: Shannon Barrett Date: Tue, 22 Mar 2016 12:32:48 -0500 Subject: [PATCH 1/3] Fixes issue #62 --- PlexRequests.Api.Interfaces/ISickRageApi.cs | 4 ++- PlexRequests.Api.Interfaces/ISonarrApi.cs | 2 +- PlexRequests.Api/Mocks/MockSonarrApi.cs | 2 +- PlexRequests.Api/SickrageApi.cs | 33 +++++++++++++++++++-- PlexRequests.Api/SonarrApi.cs | 15 +++++++++- PlexRequests.Store/RequestedModel.cs | 1 + PlexRequests.UI/Content/search.js | 9 ++++-- PlexRequests.UI/Helpers/TvSender.cs | 4 +-- PlexRequests.UI/Modules/SearchModule.cs | 15 ++++++---- PlexRequests.UI/Views/Search/Index.cshtml | 5 ++-- 10 files changed, 73 insertions(+), 17 deletions(-) diff --git a/PlexRequests.Api.Interfaces/ISickRageApi.cs b/PlexRequests.Api.Interfaces/ISickRageApi.cs index 516b8784f..038caa26e 100644 --- a/PlexRequests.Api.Interfaces/ISickRageApi.cs +++ b/PlexRequests.Api.Interfaces/ISickRageApi.cs @@ -32,9 +32,11 @@ namespace PlexRequests.Api.Interfaces { public interface ISickRageApi { - SickRageTvAdd AddSeries(int tvdbId, bool latest, string quality, string apiKey, + SickRageTvAdd AddSeries(int tvdbId, bool latest, int[] seasons, string quality, string apiKey, Uri baseUrl); SickRagePing Ping(string apiKey, Uri baseUrl); + + SickRageTvAdd AddSeason(int tvdbId, int season, string apiKey, Uri baseUrl); } } \ No newline at end of file diff --git a/PlexRequests.Api.Interfaces/ISonarrApi.cs b/PlexRequests.Api.Interfaces/ISonarrApi.cs index d9e7c61db..7939cd21d 100644 --- a/PlexRequests.Api.Interfaces/ISonarrApi.cs +++ b/PlexRequests.Api.Interfaces/ISonarrApi.cs @@ -36,7 +36,7 @@ namespace PlexRequests.Api.Interfaces List GetProfiles(string apiKey, Uri baseUrl); SonarrAddSeries AddSeries(int tvdbId, string title, int qualityId, bool seasonFolders, string rootPath, - bool episodes, string apiKey, Uri baseUrl); + bool episodes, int[] seasons, string apiKey, Uri baseUrl); SystemStatus SystemStatus(string apiKey, Uri baseUrl); } diff --git a/PlexRequests.Api/Mocks/MockSonarrApi.cs b/PlexRequests.Api/Mocks/MockSonarrApi.cs index 8508d5a13..1694c3069 100644 --- a/PlexRequests.Api/Mocks/MockSonarrApi.cs +++ b/PlexRequests.Api/Mocks/MockSonarrApi.cs @@ -43,7 +43,7 @@ namespace PlexRequests.Api.Mocks return obj; } - public SonarrAddSeries AddSeries(int tvdbId, string title, int qualityId, bool seasonFolders, string rootPath, bool episodes, + public SonarrAddSeries AddSeries(int tvdbId, string title, int qualityId, bool seasonFolders, string rootPath, bool episodes, int[] seasons, string apiKey, Uri baseUrl) { var json = MockApiData.Sonarr_AddSeriesResult; diff --git a/PlexRequests.Api/SickrageApi.cs b/PlexRequests.Api/SickrageApi.cs index f81693f5d..c589f059c 100644 --- a/PlexRequests.Api/SickrageApi.cs +++ b/PlexRequests.Api/SickrageApi.cs @@ -31,6 +31,7 @@ using System; using NLog; using PlexRequests.Api.Interfaces; using PlexRequests.Api.Models.SickRage; +using PlexRequests.Helpers; using RestSharp; namespace PlexRequests.Api @@ -47,13 +48,13 @@ namespace PlexRequests.Api private ApiRequest Api { get; } - public SickRageTvAdd AddSeries(int tvdbId, bool latest, string quality, string apiKey, + public SickRageTvAdd AddSeries(int tvdbId, bool latest, int[] seasons, string quality, string apiKey, Uri baseUrl) { string status; var futureStatus = SickRageStatus.Wanted; - status = latest ? SickRageStatus.Skipped : SickRageStatus.Wanted; + status = latest || seasons.Length > 0 ? SickRageStatus.Skipped : SickRageStatus.Wanted; var request = new RestRequest { @@ -71,6 +72,17 @@ namespace PlexRequests.Api var obj = Api.Execute(request, baseUrl); + if (!latest && seasons.Length > 0 && obj.result != "failure") + { + //handle the seasons requested + foreach (int s in seasons) + { + var result = AddSeason(tvdbId, s, apiKey, baseUrl); + Log.Trace("SickRage adding season results: "); + Log.Trace(result.DumpJson()); + } + } + return obj; } @@ -87,5 +99,22 @@ namespace PlexRequests.Api return obj; } + + public SickRageTvAdd AddSeason(int tvdbId, int season, string apiKey, Uri baseUrl) + { + var request = new RestRequest + { + Resource = "/api/{apiKey}/?cmd=episode.setstatus", + Method = Method.GET + }; + request.AddUrlSegment("apiKey", apiKey); + request.AddQueryParameter("tvdbid", tvdbId.ToString()); + request.AddQueryParameter("season", season.ToString()); + request.AddQueryParameter("status", SickRageStatus.Wanted); + + var obj = Api.Execute(request, baseUrl); + + return obj; + } } } \ No newline at end of file diff --git a/PlexRequests.Api/SonarrApi.cs b/PlexRequests.Api/SonarrApi.cs index 148f27d23..895c696ec 100644 --- a/PlexRequests.Api/SonarrApi.cs +++ b/PlexRequests.Api/SonarrApi.cs @@ -54,7 +54,7 @@ namespace PlexRequests.Api return obj; } - public SonarrAddSeries AddSeries(int tvdbId, string title, int qualityId, bool seasonFolders, string rootPath, bool episodes, string apiKey, Uri baseUrl) + public SonarrAddSeries AddSeries(int tvdbId, string title, int qualityId, bool seasonFolders, string rootPath, bool episodes, int[] seasons, string apiKey, Uri baseUrl) { var request = new RestRequest @@ -90,6 +90,19 @@ namespace PlexRequests.Api options.seasons = new List(); options.rootFolderPath = rootPath; + if (seasons.Length > 0) + { + foreach (int s in seasons) + { + var season = new Season + { + seasonNumber = s, + monitored = true + }; + options.seasons.Add(season); + } + } + request.AddHeader("X-Api-Key", apiKey); request.AddJsonBody(options); diff --git a/PlexRequests.Store/RequestedModel.cs b/PlexRequests.Store/RequestedModel.cs index 247433329..aaed042b1 100644 --- a/PlexRequests.Store/RequestedModel.cs +++ b/PlexRequests.Store/RequestedModel.cs @@ -25,6 +25,7 @@ namespace PlexRequests.Store public string OtherMessage { get; set; } public bool LatestTv { get; set; } public string AdminNote { get; set; } + public int[] SeasonList { get; set; } } public enum RequestType diff --git a/PlexRequests.UI/Content/search.js b/PlexRequests.UI/Content/search.js index 4e765594b..14168b5ce 100644 --- a/PlexRequests.UI/Content/search.js +++ b/PlexRequests.UI/Content/search.js @@ -39,9 +39,14 @@ $(document).on("click", ".dropdownTv", function (e) { var $form = $('#form' + buttonId); var data = $form.serialize(); var seasons = $(this).attr("season-select"); - if (seasons === "1") { + if (seasons === "2") { // Send over the latest - data = data + "&latest=true"; + data = data + "&seasons=latest"; + } + if (seasons === "1") { + // Send over the first season + data = data + "&seasons=first"; + } var type = $form.prop('method'); diff --git a/PlexRequests.UI/Helpers/TvSender.cs b/PlexRequests.UI/Helpers/TvSender.cs index 9e63749fc..f43012d36 100644 --- a/PlexRequests.UI/Helpers/TvSender.cs +++ b/PlexRequests.UI/Helpers/TvSender.cs @@ -54,7 +54,7 @@ namespace PlexRequests.UI.Helpers int qualityProfile; int.TryParse(sonarrSettings.QualityProfile, out qualityProfile); var result = SonarrApi.AddSeries(model.ProviderId, model.Title, qualityProfile, - sonarrSettings.SeasonFolders, sonarrSettings.RootPath, model.LatestTv, sonarrSettings.ApiKey, + sonarrSettings.SeasonFolders, sonarrSettings.RootPath, model.LatestTv, model.SeasonList, sonarrSettings.ApiKey, sonarrSettings.FullUri); Log.Trace("Sonarr Add Result: "); @@ -65,7 +65,7 @@ namespace PlexRequests.UI.Helpers public SickRageTvAdd SendToSickRage(SickRageSettings sickRageSettings, RequestedModel model) { - var result = SickrageApi.AddSeries(model.ProviderId, model.LatestTv, sickRageSettings.QualityProfile, + var result = SickrageApi.AddSeries(model.ProviderId, model.LatestTv, model.SeasonList, sickRageSettings.QualityProfile, sickRageSettings.ApiKey, sickRageSettings.FullUri); Log.Trace("SickRage Add Result: "); diff --git a/PlexRequests.UI/Modules/SearchModule.cs b/PlexRequests.UI/Modules/SearchModule.cs index 7d1d0dcab..a9a5fd446 100644 --- a/PlexRequests.UI/Modules/SearchModule.cs +++ b/PlexRequests.UI/Modules/SearchModule.cs @@ -77,7 +77,7 @@ namespace PlexRequests.UI.Modules Get["movie/playing"] = parameters => CurrentlyPlayingMovies(); Post["request/movie"] = parameters => RequestMovie((int)Request.Form.movieId); - Post["request/tv"] = parameters => RequestTvShow((int)Request.Form.tvId, (bool)Request.Form.latest); + Post["request/tv"] = parameters => RequestTvShow((int)Request.Form.tvId, (string)Request.Form.seasons); } private TheMovieDbApi MovieApi { get; } private ICouchPotatoApi CouchPotatoApi { get; } @@ -259,7 +259,7 @@ namespace PlexRequests.UI.Modules /// The show identifier. /// if set to true [latest]. /// - private Response RequestTvShow(int showId, bool latest) + private Response RequestTvShow(int showId, string seasons) { if (RequestService.CheckRequest(showId)) { @@ -285,7 +285,7 @@ namespace PlexRequests.UI.Modules DateTime firstAir; DateTime.TryParse(showInfo.premiered, out firstAir); - + var latest = seasons == "latest"; var model = new RequestedModel { ProviderId = showInfo.externals?.thetvdb ?? 0, @@ -302,7 +302,12 @@ namespace PlexRequests.UI.Modules LatestTv = latest, ImdbId = showInfo.externals?.imdb ?? string.Empty }; - + var seasonsList = new List(); + if (seasons == "first") + { + seasonsList.Add(1); + } + model.SeasonList = seasonsList.ToArray(); var settings = PrService.GetSettings(); if (!settings.RequireApproval) @@ -357,7 +362,7 @@ namespace PlexRequests.UI.Modules private Response SendToSickRage(SickRageSettings sickRageSettings, RequestedModel model) { - var result = SickrageApi.AddSeries(model.ProviderId, model.LatestTv, sickRageSettings.QualityProfile, + var result = SickrageApi.AddSeries(model.ProviderId, model.LatestTv, model.SeasonList, sickRageSettings.QualityProfile, sickRageSettings.ApiKey, sickRageSettings.FullUri); Log.Trace("SickRage Result: "); diff --git a/PlexRequests.UI/Views/Search/Index.cshtml b/PlexRequests.UI/Views/Search/Index.cshtml index 7e41c6b4d..553ac32d7 100644 --- a/PlexRequests.UI/Views/Search/Index.cshtml +++ b/PlexRequests.UI/Views/Search/Index.cshtml @@ -84,7 +84,7 @@
- + {{#if_eq type "movie"}} {{/if_eq}} @@ -96,7 +96,8 @@
{{/if_eq}} From 55addbee0ac994e057d387c79691acd4714f2422 Mon Sep 17 00:00:00 2001 From: Shannon Barrett Date: Tue, 22 Mar 2016 14:15:14 -0500 Subject: [PATCH 2/3] Working on getting the Sonarr component to work correctly. --- PlexRequests.Api/SonarrApi.cs | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/PlexRequests.Api/SonarrApi.cs b/PlexRequests.Api/SonarrApi.cs index 895c696ec..8735060e4 100644 --- a/PlexRequests.Api/SonarrApi.cs +++ b/PlexRequests.Api/SonarrApi.cs @@ -64,23 +64,26 @@ namespace PlexRequests.Api }; var options = new SonarrAddSeries(); - if (episodes) + if (seasons.Length == 0) { - options.addOptions = new AddOptions + if (episodes) { - ignoreEpisodesWithFiles = true, - ignoreEpisodesWithoutFiles = true, - searchForMissingEpisodes = false - }; - } - else - { - options.addOptions = new AddOptions + options.addOptions = new AddOptions + { + ignoreEpisodesWithFiles = true, + ignoreEpisodesWithoutFiles = true, + searchForMissingEpisodes = false + }; + } + else { - ignoreEpisodesWithFiles = false, - searchForMissingEpisodes = true, - ignoreEpisodesWithoutFiles = false - }; + options.addOptions = new AddOptions + { + ignoreEpisodesWithFiles = false, + searchForMissingEpisodes = true, + ignoreEpisodesWithoutFiles = false + }; + } } options.seasonFolder = seasonFolders; options.title = title; From 15f7572cf576dbf54a6418b194523eb037bb9ede Mon Sep 17 00:00:00 2001 From: Shannon Barrett Date: Thu, 24 Mar 2016 12:03:59 -0500 Subject: [PATCH 3/3] Updated the logic for handling specific seasons in Sonarr and Sickrage --- PlexRequests.Api.Interfaces/ISickRageApi.cs | 2 +- PlexRequests.Api.Interfaces/ISonarrApi.cs | 2 +- .../PlexRequests.Api.Models.csproj | 1 + PlexRequests.Api.Models/Tv/TVMazeShow.cs | 1 + PlexRequests.Api.Models/Tv/TvMazeSeasons.cs | 13 ++++ PlexRequests.Api/Mocks/MockSonarrApi.cs | 2 +- PlexRequests.Api/SickrageApi.cs | 11 ++-- PlexRequests.Api/SonarrApi.cs | 63 +++++++++---------- PlexRequests.Api/TvMazeApi.cs | 22 ++++++- PlexRequests.Core/Setup.cs | 1 - PlexRequests.Store/RequestedModel.cs | 2 +- PlexRequests.UI/Helpers/TvSender.cs | 4 +- PlexRequests.UI/Modules/SearchModule.cs | 45 +++++++------ 13 files changed, 101 insertions(+), 68 deletions(-) create mode 100644 PlexRequests.Api.Models/Tv/TvMazeSeasons.cs diff --git a/PlexRequests.Api.Interfaces/ISickRageApi.cs b/PlexRequests.Api.Interfaces/ISickRageApi.cs index 038caa26e..a5770b56f 100644 --- a/PlexRequests.Api.Interfaces/ISickRageApi.cs +++ b/PlexRequests.Api.Interfaces/ISickRageApi.cs @@ -32,7 +32,7 @@ namespace PlexRequests.Api.Interfaces { public interface ISickRageApi { - SickRageTvAdd AddSeries(int tvdbId, bool latest, int[] seasons, string quality, string apiKey, + SickRageTvAdd AddSeries(int tvdbId, int seasoncount, int[] seasons, string quality, string apiKey, Uri baseUrl); SickRagePing Ping(string apiKey, Uri baseUrl); diff --git a/PlexRequests.Api.Interfaces/ISonarrApi.cs b/PlexRequests.Api.Interfaces/ISonarrApi.cs index 7939cd21d..e4dce0c3a 100644 --- a/PlexRequests.Api.Interfaces/ISonarrApi.cs +++ b/PlexRequests.Api.Interfaces/ISonarrApi.cs @@ -36,7 +36,7 @@ namespace PlexRequests.Api.Interfaces List GetProfiles(string apiKey, Uri baseUrl); SonarrAddSeries AddSeries(int tvdbId, string title, int qualityId, bool seasonFolders, string rootPath, - bool episodes, int[] seasons, string apiKey, Uri baseUrl); + int seasonCount, int[] seasons, string apiKey, Uri baseUrl); SystemStatus SystemStatus(string apiKey, Uri baseUrl); } diff --git a/PlexRequests.Api.Models/PlexRequests.Api.Models.csproj b/PlexRequests.Api.Models/PlexRequests.Api.Models.csproj index bd3151c55..1078563fe 100644 --- a/PlexRequests.Api.Models/PlexRequests.Api.Models.csproj +++ b/PlexRequests.Api.Models/PlexRequests.Api.Models.csproj @@ -66,6 +66,7 @@ + diff --git a/PlexRequests.Api.Models/Tv/TVMazeShow.cs b/PlexRequests.Api.Models/Tv/TVMazeShow.cs index 165658602..faebd6d84 100644 --- a/PlexRequests.Api.Models/Tv/TVMazeShow.cs +++ b/PlexRequests.Api.Models/Tv/TVMazeShow.cs @@ -23,5 +23,6 @@ namespace PlexRequests.Api.Models.Tv public string summary { get; set; } public int updated { get; set; } public Links _links { get; set; } + public int seasonCount { get; set; } } } \ No newline at end of file diff --git a/PlexRequests.Api.Models/Tv/TvMazeSeasons.cs b/PlexRequests.Api.Models/Tv/TvMazeSeasons.cs new file mode 100644 index 000000000..bce31cea5 --- /dev/null +++ b/PlexRequests.Api.Models/Tv/TvMazeSeasons.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace PlexRequests.Api.Models.Tv +{ + public class TvMazeSeasons : TvMazeShow + { + public int number { get; set; } + } +} diff --git a/PlexRequests.Api/Mocks/MockSonarrApi.cs b/PlexRequests.Api/Mocks/MockSonarrApi.cs index 1694c3069..dfb816f8a 100644 --- a/PlexRequests.Api/Mocks/MockSonarrApi.cs +++ b/PlexRequests.Api/Mocks/MockSonarrApi.cs @@ -43,7 +43,7 @@ namespace PlexRequests.Api.Mocks return obj; } - public SonarrAddSeries AddSeries(int tvdbId, string title, int qualityId, bool seasonFolders, string rootPath, bool episodes, int[] seasons, + public SonarrAddSeries AddSeries(int tvdbId, string title, int qualityId, bool seasonFolders, string rootPath, int seasonCount, int[] seasons, string apiKey, Uri baseUrl) { var json = MockApiData.Sonarr_AddSeriesResult; diff --git a/PlexRequests.Api/SickrageApi.cs b/PlexRequests.Api/SickrageApi.cs index c589f059c..fe27968fe 100644 --- a/PlexRequests.Api/SickrageApi.cs +++ b/PlexRequests.Api/SickrageApi.cs @@ -28,6 +28,7 @@ #endregion using System; +using System.Linq; using NLog; using PlexRequests.Api.Interfaces; using PlexRequests.Api.Models.SickRage; @@ -48,13 +49,11 @@ namespace PlexRequests.Api private ApiRequest Api { get; } - public SickRageTvAdd AddSeries(int tvdbId, bool latest, int[] seasons, string quality, string apiKey, + public SickRageTvAdd AddSeries(int tvdbId, int seasonCount, int[] seasons, string quality, string apiKey, Uri baseUrl) { - string status; - var futureStatus = SickRageStatus.Wanted; - - status = latest || seasons.Length > 0 ? SickRageStatus.Skipped : SickRageStatus.Wanted; + var futureStatus = seasons.Length > 0 && !seasons.Any(x => x == seasonCount) ? SickRageStatus.Skipped : SickRageStatus.Wanted; + var status = seasons.Length > 0 ? SickRageStatus.Skipped : SickRageStatus.Wanted; var request = new RestRequest { @@ -72,7 +71,7 @@ namespace PlexRequests.Api var obj = Api.Execute(request, baseUrl); - if (!latest && seasons.Length > 0 && obj.result != "failure") + if (seasons.Length > 0 && obj.result != "failure") { //handle the seasons requested foreach (int s in seasons) diff --git a/PlexRequests.Api/SonarrApi.cs b/PlexRequests.Api/SonarrApi.cs index 8735060e4..166b41497 100644 --- a/PlexRequests.Api/SonarrApi.cs +++ b/PlexRequests.Api/SonarrApi.cs @@ -26,7 +26,7 @@ #endregion using System; using System.Collections.Generic; - +using System.Linq; using NLog; using PlexRequests.Api.Interfaces; using PlexRequests.Api.Models.Sonarr; @@ -54,7 +54,7 @@ namespace PlexRequests.Api return obj; } - public SonarrAddSeries AddSeries(int tvdbId, string title, int qualityId, bool seasonFolders, string rootPath, bool episodes, int[] seasons, string apiKey, Uri baseUrl) + public SonarrAddSeries AddSeries(int tvdbId, string title, int qualityId, bool seasonFolders, string rootPath, int seasonCount, int[] seasons, string apiKey, Uri baseUrl) { var request = new RestRequest @@ -64,27 +64,28 @@ namespace PlexRequests.Api }; var options = new SonarrAddSeries(); - if (seasons.Length == 0) - { - if (episodes) - { - options.addOptions = new AddOptions - { - ignoreEpisodesWithFiles = true, - ignoreEpisodesWithoutFiles = true, - searchForMissingEpisodes = false - }; - } - else - { - options.addOptions = new AddOptions - { - ignoreEpisodesWithFiles = false, - searchForMissingEpisodes = true, - ignoreEpisodesWithoutFiles = false - }; - } - } + + + //I'm fairly certain we won't need this logic anymore since we're manually adding the seasons + //if (seasons.Length == 0) + //{ + // options.addOptions = new AddOptions + // { + // ignoreEpisodesWithFiles = true, + // ignoreEpisodesWithoutFiles = true, + // searchForMissingEpisodes = false + // }; + //} + //else + //{ + // options.addOptions = new AddOptions + // { + // ignoreEpisodesWithFiles = false, + // ignoreEpisodesWithoutFiles = false, + // searchForMissingEpisodes = true + // }; + //} + options.seasonFolder = seasonFolders; options.title = title; options.qualityProfileId = qualityId; @@ -93,20 +94,16 @@ namespace PlexRequests.Api options.seasons = new List(); options.rootFolderPath = rootPath; - if (seasons.Length > 0) + for (var i = 1; i <= seasonCount; i++) { - foreach (int s in seasons) + var season = new Season { - var season = new Season - { - seasonNumber = s, - monitored = true - }; - options.seasons.Add(season); - } + seasonNumber = i, + monitored = seasons.Length == 0 || seasons.Any(x => x == i) + }; + options.seasons.Add(season); } - request.AddHeader("X-Api-Key", apiKey); request.AddJsonBody(options); diff --git a/PlexRequests.Api/TvMazeApi.cs b/PlexRequests.Api/TvMazeApi.cs index 8b6cb9f37..6043710d7 100644 --- a/PlexRequests.Api/TvMazeApi.cs +++ b/PlexRequests.Api/TvMazeApi.cs @@ -26,7 +26,7 @@ #endregion using System; using System.Collections.Generic; - +using System.Linq; using NLog; using PlexRequests.Api.Models.Tv; @@ -79,7 +79,25 @@ namespace PlexRequests.Api request.AddUrlSegment("id", theTvDbId.ToString()); request.AddHeader("Content-Type", "application/json"); - return Api.Execute(request, new Uri(Uri)); + var obj = Api.Execute(request, new Uri(Uri)); + obj.seasonCount = GetSeasonCount(obj.id); + + return obj; + } + + public int GetSeasonCount(int id) + { + var request = new RestRequest + { + Method = Method.GET, + Resource = "shows/{id}/seasons" + }; + request.AddUrlSegment("id", id.ToString()); + request.AddHeader("Content-Type", "application/json"); + + var obj = Api.Execute>(request, new Uri(Uri)); + var seasons = obj.Select(x => x.number > 0); + return seasons.Count(); } } diff --git a/PlexRequests.Core/Setup.cs b/PlexRequests.Core/Setup.cs index 04ce5b9db..63afee327 100644 --- a/PlexRequests.Core/Setup.cs +++ b/PlexRequests.Core/Setup.cs @@ -110,7 +110,6 @@ namespace PlexRequests.Core Available = r.Available, ImdbId = show.externals.imdb, Issues = r.Issues, - LatestTv = r.LatestTv, OtherMessage = r.OtherMessage, Overview = show.summary.RemoveHtml(), RequestedBy = r.RequestedBy, diff --git a/PlexRequests.Store/RequestedModel.cs b/PlexRequests.Store/RequestedModel.cs index aaed042b1..5f746b841 100644 --- a/PlexRequests.Store/RequestedModel.cs +++ b/PlexRequests.Store/RequestedModel.cs @@ -23,9 +23,9 @@ namespace PlexRequests.Store public bool Available { get; set; } public IssueState Issues { get; set; } public string OtherMessage { get; set; } - public bool LatestTv { get; set; } public string AdminNote { get; set; } public int[] SeasonList { get; set; } + public int SeasonCount { get; set; } } public enum RequestType diff --git a/PlexRequests.UI/Helpers/TvSender.cs b/PlexRequests.UI/Helpers/TvSender.cs index f43012d36..6c2f59ace 100644 --- a/PlexRequests.UI/Helpers/TvSender.cs +++ b/PlexRequests.UI/Helpers/TvSender.cs @@ -54,7 +54,7 @@ namespace PlexRequests.UI.Helpers int qualityProfile; int.TryParse(sonarrSettings.QualityProfile, out qualityProfile); var result = SonarrApi.AddSeries(model.ProviderId, model.Title, qualityProfile, - sonarrSettings.SeasonFolders, sonarrSettings.RootPath, model.LatestTv, model.SeasonList, sonarrSettings.ApiKey, + sonarrSettings.SeasonFolders, sonarrSettings.RootPath, model.SeasonCount, model.SeasonList, sonarrSettings.ApiKey, sonarrSettings.FullUri); Log.Trace("Sonarr Add Result: "); @@ -65,7 +65,7 @@ namespace PlexRequests.UI.Helpers public SickRageTvAdd SendToSickRage(SickRageSettings sickRageSettings, RequestedModel model) { - var result = SickrageApi.AddSeries(model.ProviderId, model.LatestTv, model.SeasonList, sickRageSettings.QualityProfile, + var result = SickrageApi.AddSeries(model.ProviderId, model.SeasonCount, model.SeasonList, sickRageSettings.QualityProfile, sickRageSettings.ApiKey, sickRageSettings.FullUri); Log.Trace("SickRage Add Result: "); diff --git a/PlexRequests.UI/Modules/SearchModule.cs b/PlexRequests.UI/Modules/SearchModule.cs index a9a5fd446..e1ee9e8b1 100644 --- a/PlexRequests.UI/Modules/SearchModule.cs +++ b/PlexRequests.UI/Modules/SearchModule.cs @@ -285,7 +285,6 @@ namespace PlexRequests.UI.Modules DateTime firstAir; DateTime.TryParse(showInfo.premiered, out firstAir); - var latest = seasons == "latest"; var model = new RequestedModel { ProviderId = showInfo.externals?.thetvdb ?? 0, @@ -299,14 +298,20 @@ namespace PlexRequests.UI.Modules Approved = false, RequestedBy = Session[SessionKeys.UsernameKey].ToString(), Issues = IssueState.None, - LatestTv = latest, - ImdbId = showInfo.externals?.imdb ?? string.Empty + ImdbId = showInfo.externals?.imdb ?? string.Empty, + SeasonCount = showInfo.seasonCount }; var seasonsList = new List(); - if (seasons == "first") + switch (seasons) { - seasonsList.Add(1); + case "first": + seasonsList.Add(1); + break; + case "latest": + seasonsList.Add(model.SeasonCount); + break; } + model.SeasonList = seasonsList.ToArray(); var settings = PrService.GetSettings(); @@ -360,23 +365,23 @@ namespace PlexRequests.UI.Modules return result; } - private Response SendToSickRage(SickRageSettings sickRageSettings, RequestedModel model) - { - var result = SickrageApi.AddSeries(model.ProviderId, model.LatestTv, model.SeasonList, sickRageSettings.QualityProfile, - sickRageSettings.ApiKey, sickRageSettings.FullUri); + //private Response SendToSickRage(SickRageSettings sickRageSettings, RequestedModel model) + //{ + // var result = SickrageApi.AddSeries(model.ProviderId, model.SeasonCount, model.SeasonList, sickRageSettings.QualityProfile, + // sickRageSettings.ApiKey, sickRageSettings.FullUri); - Log.Trace("SickRage Result: "); - Log.Trace(result.DumpJson()); + // Log.Trace("SickRage Result: "); + // Log.Trace(result.DumpJson()); - if (result?.result == "success") - { - model.Approved = true; - Log.Debug("Adding tv to database requests (No approval required & SickRage)"); - RequestService.AddRequest(model); + // if (result?.result == "success") + // { + // model.Approved = true; + // Log.Debug("Adding tv to database requests (No approval required & SickRage)"); + // RequestService.AddRequest(model); - return Response.AsJson(new JsonResponseModel { Result = true }); - } - return Response.AsJson(new JsonResponseModel { Result = false, Message = "Something went wrong adding the movie to SickRage! Please check your settings." }); - } + // return Response.AsJson(new JsonResponseModel { Result = true }); + // } + // return Response.AsJson(new JsonResponseModel { Result = false, Message = "Something went wrong adding the movie to SickRage! Please check your settings." }); + //} } } \ No newline at end of file