diff --git a/src/NzbDrone.Core.Test/ParserTests/SingleEpisodeParserFixture.cs b/src/NzbDrone.Core.Test/ParserTests/SingleEpisodeParserFixture.cs index f30d7dc56..5ff921292 100644 --- a/src/NzbDrone.Core.Test/ParserTests/SingleEpisodeParserFixture.cs +++ b/src/NzbDrone.Core.Test/ParserTests/SingleEpisodeParserFixture.cs @@ -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) { diff --git a/src/Sonarr.Api.V3/Episodes/EpisodeModule.cs b/src/Sonarr.Api.V3/Episodes/EpisodeModule.cs index df1e713d5..1c4807669 100644 --- a/src/Sonarr.Api.V3/Episodes/EpisodeModule.cs +++ b/src/Sonarr.Api.V3/Episodes/EpisodeModule.cs @@ -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)