New: Filter episodes in API v3 by episode file ID

Closes #3589
This commit is contained in:
Mark McDowall 2020-03-18 18:09:38 -07:00
parent 25abf52b3f
commit a965b8e7b2
2 changed files with 19 additions and 10 deletions

View file

@ -141,6 +141,8 @@ namespace NzbDrone.Core.Test.ParserTests
[TestCase("Series.Title.S01EP01.English.AC3.DL.1080p.BluRay-Sonarr", "Series Title", 1, 1)] [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("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("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)] //[TestCase("", "", 0, 0)]
public void should_parse_single_episode(string postTitle, string title, int seasonNumber, int episodeNumber) public void should_parse_single_episode(string postTitle, string title, int seasonNumber, int episodeNumber)
{ {

View file

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