added more movie filters
This commit is contained in:
parent
98e8b73d81
commit
f95d2cc506
|
@ -1,6 +1,7 @@
|
||||||
using MediaBrowser.Controller.Dto;
|
using MediaBrowser.Controller.Dto;
|
||||||
using MediaBrowser.Controller.Entities;
|
using MediaBrowser.Controller.Entities;
|
||||||
using MediaBrowser.Controller.Entities.Audio;
|
using MediaBrowser.Controller.Entities.Audio;
|
||||||
|
using MediaBrowser.Controller.Entities.Movies;
|
||||||
using MediaBrowser.Controller.Entities.TV;
|
using MediaBrowser.Controller.Entities.TV;
|
||||||
using MediaBrowser.Controller.Library;
|
using MediaBrowser.Controller.Library;
|
||||||
using MediaBrowser.Controller.Localization;
|
using MediaBrowser.Controller.Localization;
|
||||||
|
@ -147,6 +148,21 @@ namespace MediaBrowser.Api.UserLibrary
|
||||||
[ApiMember(Name = "MaxOfficialRating", Description = "Optional filter by maximum official rating (PG, PG-13, TV-MA, etc).", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
|
[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; }
|
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>
|
/// <summary>
|
||||||
/// Gets the order by.
|
/// Gets the order by.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -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;
|
return items;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -241,11 +241,7 @@ namespace MediaBrowser.Server.Implementations.Library
|
||||||
return new Tuple<string, int>(searchInput, 0);
|
return new Tuple<string, int>(searchInput, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
var match = Regex.Match(input, searchInput, RegexOptions.IgnoreCase);
|
var index = input.IndexOf(searchInput, StringComparison.OrdinalIgnoreCase);
|
||||||
|
|
||||||
if (match.Success)
|
|
||||||
{
|
|
||||||
var index = match.Index;
|
|
||||||
|
|
||||||
if (index == 0)
|
if (index == 0)
|
||||||
{
|
{
|
||||||
|
@ -255,7 +251,6 @@ namespace MediaBrowser.Server.Implementations.Library
|
||||||
{
|
{
|
||||||
return new Tuple<string, int>(searchInput, 2);
|
return new Tuple<string, int>(searchInput, 2);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
var items = GetWords(input);
|
var items = GetWords(input);
|
||||||
|
|
||||||
|
@ -272,11 +267,7 @@ namespace MediaBrowser.Server.Implementations.Library
|
||||||
return new Tuple<string, int>(searchTerm, 3 + (i + 1) * (j + 1));
|
return new Tuple<string, int>(searchTerm, 3 + (i + 1) * (j + 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
match = Regex.Match(item, searchTerm, RegexOptions.IgnoreCase);
|
index = item.IndexOf(searchTerm, StringComparison.OrdinalIgnoreCase);
|
||||||
|
|
||||||
if (match.Success)
|
|
||||||
{
|
|
||||||
var index = match.Index;
|
|
||||||
|
|
||||||
if (index == 0)
|
if (index == 0)
|
||||||
{
|
{
|
||||||
|
@ -288,7 +279,6 @@ namespace MediaBrowser.Server.Implementations.Library
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return new Tuple<string, int>(null, -1);
|
return new Tuple<string, int>(null, -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user