aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Api/TvShowsService.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Api/TvShowsService.cs')
-rw-r--r--MediaBrowser.Api/TvShowsService.cs36
1 files changed, 30 insertions, 6 deletions
diff --git a/MediaBrowser.Api/TvShowsService.cs b/MediaBrowser.Api/TvShowsService.cs
index 43fe74d5f..d7f017e1d 100644
--- a/MediaBrowser.Api/TvShowsService.cs
+++ b/MediaBrowser.Api/TvShowsService.cs
@@ -137,6 +137,7 @@ namespace MediaBrowser.Api
}
[Route("/Shows/{Id}/Episodes", "GET", Summary = "Gets episodes for a tv season")]
+ [Route("/Shows/Episodes", "GET", Summary = "Gets episodes for a tv season")]
public class GetEpisodes : IReturn<ItemsResult>, IHasItemFields, IHasDtoOptions
{
/// <summary>
@@ -200,9 +201,11 @@ namespace MediaBrowser.Api
[ApiMember(Name = "EnableUserData", Description = "Optional, include user data", IsRequired = false, DataType = "boolean", ParameterType = "query", Verb = "GET")]
public bool? EnableUserData { get; set; }
+ public string SeriesName { get; set; }
}
[Route("/Shows/{Id}/Seasons", "GET", Summary = "Gets seasons for a tv series")]
+ [Route("/Shows/Seasons", "GET", Summary = "Gets seasons for a tv series")]
public class GetSeasons : IReturn<ItemsResult>, IHasItemFields, IHasDtoOptions
{
/// <summary>
@@ -246,6 +249,7 @@ namespace MediaBrowser.Api
[ApiMember(Name = "EnableUserData", Description = "Optional, include user data", IsRequired = false, DataType = "boolean", ParameterType = "query", Verb = "GET")]
public bool? EnableUserData { get; set; }
+ public string SeriesName { get; set; }
}
/// <summary>
@@ -427,11 +431,11 @@ namespace MediaBrowser.Api
{
var user = _userManager.GetUserById(request.UserId);
- var series = _libraryManager.GetItemById(request.Id) as Series;
+ var series = GetSeries(request.Id, request.SeriesName, user);
if (series == null)
{
- throw new ResourceNotFoundException("No series exists with Id " + request.Id);
+ throw new ResourceNotFoundException("Series not found");
}
var seasons = (await series.GetItems(new InternalItemsQuery(user)
@@ -455,6 +459,26 @@ namespace MediaBrowser.Api
};
}
+ private Series GetSeries(string seriesId, string seriesName, User user)
+ {
+ if (!string.IsNullOrWhiteSpace(seriesId))
+ {
+ return _libraryManager.GetItemById(seriesId) as Series;
+ }
+
+ if (!string.IsNullOrWhiteSpace(seriesName))
+ {
+ return _libraryManager.GetItemList(new InternalItemsQuery(user)
+ {
+ Name = seriesName,
+ IncludeItemTypes = new string[] { typeof(Series).Name }
+
+ }).OfType<Series>().FirstOrDefault();
+ }
+
+ return null;
+ }
+
public async Task<object> Get(GetEpisodes request)
{
var user = _userManager.GetUserById(request.UserId);
@@ -474,11 +498,11 @@ namespace MediaBrowser.Api
}
else if (request.Season.HasValue)
{
- var series = _libraryManager.GetItemById(request.Id) as Series;
+ var series = GetSeries(request.Id, request.SeriesName, user);
if (series == null)
{
- throw new ResourceNotFoundException("No series exists with Id " + request.Id);
+ throw new ResourceNotFoundException("Series not found");
}
var season = series.GetSeasons(user).FirstOrDefault(i => i.IndexNumber == request.Season.Value);
@@ -494,11 +518,11 @@ namespace MediaBrowser.Api
}
else
{
- var series = _libraryManager.GetItemById(request.Id) as Series;
+ var series = GetSeries(request.Id, request.SeriesName, user);
if (series == null)
{
- throw new ResourceNotFoundException("No series exists with Id " + request.Id);
+ throw new ResourceNotFoundException("Series not found");
}
episodes = series.GetEpisodes(user);