Updated the logic for handling specific seasons in Sonarr and Sickrage

This commit is contained in:
Shannon Barrett 2016-03-24 12:03:59 -05:00
commit 15f7572cf5
13 changed files with 101 additions and 68 deletions

View file

@ -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;

View file

@ -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<SickRageTvAdd>(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)

View file

@ -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<Season>();
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);

View file

@ -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<TvMazeShow>(request, new Uri(Uri));
var obj = Api.Execute<TvMazeShow>(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<List<TvMazeSeasons>>(request, new Uri(Uri));
var seasons = obj.Select(x => x.number > 0);
return seasons.Count();
}
}