New: Filter episodes in API v3 by episode file ID

Closes #3589
pull/3660/head
Mark McDowall 5 years ago
parent 25abf52b3f
commit a965b8e7b2

@ -141,6 +141,8 @@ namespace NzbDrone.Core.Test.ParserTests
[TestCase("Series.Title.S01EP01.English.AC3.DL.1080p.BluRay-Sonarr", "Series Title", 1, 1)]
[TestCase("tvs-amgo-dd51-dl-7p-azhd-x264-103", "tvs-amgo-dd51-dl-7p-azhd", 1, 3)]
[TestCase("Series Title - S01E01 [AC3 5.1 Castellano][www.descargas2020.org]", "Series Title", 1, 1)]
[TestCase("Peaky Blinders - [01x01] - Episode 1", "Peaky Blinders", 1, 1)]
[TestCase("Peaky Blinders - [02x01] - Episode 1", "Peaky Blinders", 2, 1)]
//[TestCase("", "", 0, 0)]
public void should_parse_single_episode(string postTitle, string title, int seasonNumber, int episodeNumber)
{

@ -28,13 +28,9 @@ namespace Sonarr.Api.V3.Episodes
{
var seriesIdQuery = Request.Query.SeriesId;
var episodeIdsQuery = Request.Query.EpisodeIds;
var episodeFileIdQuery = Request.Query.EpisodeFileId;
var includeImages = Request.GetBooleanQueryParameter("includeImages", false);
if (!seriesIdQuery.HasValue && !episodeIdsQuery.HasValue)
{
throw new BadRequestException("seriesId or episodeIds must be provided");
}
if (seriesIdQuery.HasValue)
{
int seriesId = Convert.ToInt32(seriesIdQuery.Value);
@ -47,14 +43,25 @@ namespace Sonarr.Api.V3.Episodes
return MapToResource(_episodeService.GetEpisodeBySeries(seriesId), false, false, includeImages);
}
else if (episodeIdsQuery.HasValue)
{
string episodeIdsValue = episodeIdsQuery.Value.ToString();
string episodeIdsValue = episodeIdsQuery.Value.ToString();
var episodeIds = episodeIdsValue.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
.Select(e => Convert.ToInt32(e))
.ToList();
var episodeIds = episodeIdsValue.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
.Select(e => Convert.ToInt32(e))
.ToList();
return MapToResource(_episodeService.GetEpisodes(episodeIds), false, false, includeImages);
}
else if (episodeFileIdQuery.HasValue)
{
int episodeFileId = Convert.ToInt32(episodeFileIdQuery.Value);
return MapToResource(_episodeService.GetEpisodesByFileId(episodeFileId), false, false, includeImages);
}
return MapToResource(_episodeService.GetEpisodes(episodeIds), false, false, includeImages);
throw new BadRequestException("seriesId or episodeIds must be provided");
}
private object SetEpisodeMonitored(int id)

Loading…
Cancel
Save