aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Api/UserLibrary/ItemsService.cs
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2013-04-29 21:29:04 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2013-04-29 21:29:04 -0400
commitf95d2cc5067463642e395a435a13a72b7abd8185 (patch)
tree7a619fea6f89bb59e1697e94cf40235c7cfadebe /MediaBrowser.Api/UserLibrary/ItemsService.cs
parent98e8b73d8158228d023189e2e15916ca7a261b4e (diff)
added more movie filters
Diffstat (limited to 'MediaBrowser.Api/UserLibrary/ItemsService.cs')
-rw-r--r--MediaBrowser.Api/UserLibrary/ItemsService.cs51
1 files changed, 51 insertions, 0 deletions
diff --git a/MediaBrowser.Api/UserLibrary/ItemsService.cs b/MediaBrowser.Api/UserLibrary/ItemsService.cs
index baa47e787..45bf17397 100644
--- a/MediaBrowser.Api/UserLibrary/ItemsService.cs
+++ b/MediaBrowser.Api/UserLibrary/ItemsService.cs
@@ -1,6 +1,7 @@
using MediaBrowser.Controller.Dto;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Audio;
+using MediaBrowser.Controller.Entities.Movies;
using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Localization;
@@ -146,6 +147,21 @@ namespace MediaBrowser.Api.UserLibrary
/// <value>The max offical rating.</value>
[ApiMember(Name = "MaxOfficialRating", Description = "Optional filter by maximum official rating (PG, PG-13, TV-MA, etc).", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
public string MaxOfficialRating { get; set; }
+
+ [ApiMember(Name = "HasThemeSong", Description = "Optional filter by items with theme songs.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
+ public bool? HasThemeSong { get; set; }
+
+ [ApiMember(Name = "HasThemeVideo", Description = "Optional filter by items with theme videos.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
+ public bool? HasThemeVideo { get; set; }
+
+ [ApiMember(Name = "HasSubtitles", Description = "Optional filter by items with subtitles.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
+ public bool? HasSubtitles { get; set; }
+
+ [ApiMember(Name = "HasSpecialFeature", Description = "Optional filter by items with special features.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
+ public bool? HasSpecialFeature { get; set; }
+
+ [ApiMember(Name = "HasTrailer", Description = "Optional filter by items with trailers.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
+ public bool? HasTrailer { get; set; }
/// <summary>
/// Gets the order by.
@@ -529,6 +545,41 @@ namespace MediaBrowser.Api.UserLibrary
}
}
+ if (request.HasTrailer.HasValue)
+ {
+ items = items.Where(i => request.HasTrailer.Value ? i.LocalTrailers.Count > 0 : i.LocalTrailers.Count == 0);
+ }
+
+ if (request.HasThemeSong.HasValue)
+ {
+ items = items.Where(i => request.HasThemeSong.Value ? i.ThemeSongs.Count > 0 : i.ThemeSongs.Count == 0);
+ }
+
+ if (request.HasThemeVideo.HasValue)
+ {
+ items = items.Where(i => request.HasThemeVideo.Value ? i.ThemeVideos.Count > 0 : i.ThemeVideos.Count == 0);
+ }
+
+ if (request.HasSpecialFeature.HasValue)
+ {
+ items = items.OfType<Movie>().Where(i => request.HasSpecialFeature.Value ? i.SpecialFeatures.Count > 0 : i.SpecialFeatures.Count == 0);
+ }
+
+ if (request.HasSubtitles.HasValue)
+ {
+ items = items.OfType<Video>().Where(i =>
+ {
+ if (request.HasSubtitles.Value)
+ {
+ return i.MediaStreams != null && i.MediaStreams.Any(m => m.Type == MediaStreamType.Subtitle);
+ }
+ else
+ {
+ return i.MediaStreams == null || i.MediaStreams.All(m => m.Type != MediaStreamType.Subtitle);
+ }
+ });
+ }
+
return items;
}