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.cs64
1 files changed, 49 insertions, 15 deletions
diff --git a/MediaBrowser.Api/TvShowsService.cs b/MediaBrowser.Api/TvShowsService.cs
index 95bde2d28..23b8efa7b 100644
--- a/MediaBrowser.Api/TvShowsService.cs
+++ b/MediaBrowser.Api/TvShowsService.cs
@@ -81,8 +81,11 @@ namespace MediaBrowser.Api
[ApiMember(Name = "Season", Description = "Optional filter by season number.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
public int? Season { get; set; }
- [ApiMember(Name = "ExcludeLocationTypes", Description = "Optional. If specified, results will be filtered based on LocationType. This allows multiple, comma delimeted.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)]
- public string ExcludeLocationTypes { get; set; }
+ [ApiMember(Name = "IsMissing", Description = "Optional filter by items that are missing episodes or not.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")]
+ public bool? IsMissing { get; set; }
+
+ [ApiMember(Name = "IsVirtualUnaired", Description = "Optional filter by items that are virtual unaired episodes or not.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")]
+ public bool? IsVirtualUnaired { get; set; }
}
[Route("/Shows/{Id}/Seasons", "GET")]
@@ -106,11 +109,14 @@ namespace MediaBrowser.Api
[ApiMember(Name = "Id", Description = "The series id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")]
public Guid Id { get; set; }
- [ApiMember(Name = "ExcludeLocationTypes", Description = "Optional. If specified, results will be filtered based on LocationType. This allows multiple, comma delimeted.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)]
- public string ExcludeLocationTypes { get; set; }
-
[ApiMember(Name = "IsSpecialSeason", Description = "Optional. Filter by special season.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")]
public bool? IsSpecialSeason { get; set; }
+
+ [ApiMember(Name = "IsMissing", Description = "Optional filter by items that are missing episodes or not.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")]
+ public bool? IsMissing { get; set; }
+
+ [ApiMember(Name = "IsVirtualUnaired", Description = "Optional filter by items that are virtual unaired episodes or not.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")]
+ public bool? IsVirtualUnaired { get; set; }
}
/// <summary>
@@ -380,12 +386,7 @@ namespace MediaBrowser.Api
}
}
- // ExcludeLocationTypes
- if (!string.IsNullOrEmpty(request.ExcludeLocationTypes))
- {
- var vals = request.ExcludeLocationTypes.Split(',');
- seasons = seasons.Where(f => !vals.Contains(f.LocationType.ToString(), StringComparer.OrdinalIgnoreCase));
- }
+ seasons = FilterVirtualSeasons(request, seasons);
seasons = _libraryManager.Sort(seasons, user, new[] { sortOrder }, SortOrder.Ascending)
.Cast<Season>();
@@ -400,6 +401,34 @@ namespace MediaBrowser.Api
};
}
+ private IEnumerable<Season> FilterVirtualSeasons(GetSeasons request, IEnumerable<Season> items)
+ {
+ if (request.IsMissing.HasValue && request.IsVirtualUnaired.HasValue)
+ {
+ var isMissing = request.IsMissing.Value;
+ var isVirtualUnaired = request.IsVirtualUnaired.Value;
+
+ if (!isMissing && !isVirtualUnaired)
+ {
+ return items.Where(i => !i.IsMissingOrVirtualUnaired);
+ }
+ }
+
+ if (request.IsMissing.HasValue)
+ {
+ var val = request.IsMissing.Value;
+ items = items.Where(i => i.IsMissingSeason == val);
+ }
+
+ if (request.IsVirtualUnaired.HasValue)
+ {
+ var val = request.IsVirtualUnaired.Value;
+ items = items.Where(i => i.IsVirtualUnaired == val);
+ }
+
+ return items;
+ }
+
public object Get(GetEpisodes request)
{
var user = _userManager.GetUserById(request.UserId);
@@ -431,11 +460,16 @@ namespace MediaBrowser.Api
episodes = episodes.Where(i => !i.IsVirtualUnaired);
}
- // ExcludeLocationTypes
- if (!string.IsNullOrEmpty(request.ExcludeLocationTypes))
+ if (request.IsMissing.HasValue)
+ {
+ var val = request.IsMissing.Value;
+ episodes = episodes.Where(i => i.IsMissingEpisode == val);
+ }
+
+ if (request.IsVirtualUnaired.HasValue)
{
- var vals = request.ExcludeLocationTypes.Split(',');
- episodes = episodes.Where(f => !vals.Contains(f.LocationType.ToString(), StringComparer.OrdinalIgnoreCase));
+ var val = request.IsVirtualUnaired.Value;
+ episodes = episodes.Where(i => i.IsVirtualUnaired == val);
}
episodes = _libraryManager.Sort(episodes, user, new[] { sortOrder }, SortOrder.Ascending)