mirror of
https://github.com/Ombi-app/Ombi.git
synced 2025-07-08 14:10:50 -07:00
Fixes issue #62
This commit is contained in:
parent
b100fbe678
commit
c9d2b8fc13
10 changed files with 73 additions and 17 deletions
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -36,7 +36,7 @@ namespace PlexRequests.Api.Interfaces
|
|||
List<SonarrProfile> 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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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<SickRageTvAdd>(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<SickRageTvAdd>(request, baseUrl);
|
||||
|
||||
return obj;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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<Season>();
|
||||
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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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');
|
||||
|
|
|
@ -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: ");
|
||||
|
|
|
@ -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
|
|||
/// <param name="showId">The show identifier.</param>
|
||||
/// <param name="latest">if set to <c>true</c> [latest].</param>
|
||||
/// <returns></returns>
|
||||
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<int>();
|
||||
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: ");
|
||||
|
|
|
@ -84,7 +84,7 @@
|
|||
</div>
|
||||
<div class="col-sm-2 col-sm-push-3">
|
||||
<form method="POST" action="/search/request/{{type}}" id="form{{id}}">
|
||||
<input name="{{type}}Id" type="text" value="{{id}}" hidden="hidden" />
|
||||
<input name="{{type}}Id" type="text" value="{{id}}" hidden="hidden" />
|
||||
{{#if_eq type "movie"}}
|
||||
<button id="{{id}}" style="text-align: right" class="btn btn-primary-outline requestMovie" type="submit"><i class="fa fa-plus"></i> Request</button>
|
||||
{{/if_eq}}
|
||||
|
@ -96,7 +96,8 @@
|
|||
</button>
|
||||
<ul class="dropdown-menu" aria-labelledby="dropdownMenu1">
|
||||
<li><a id="{{id}}" season-select="0" class="dropdownTv " href="#">All Seasons</a></li>
|
||||
<li><a id="{{id}}" season-select="1" class="dropdownTv" href="#">Latest Season</a></li>
|
||||
<li><a id="{{id}}" season-select="1" class="dropdownTv" href="#">First Season</a></li>
|
||||
<li><a id="{{id}}" season-select="2" class="dropdownTv" href="#">Latest Season</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
{{/if_eq}}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue