aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Api/UserLibrary/ItemsService.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Api/UserLibrary/ItemsService.cs')
-rw-r--r--MediaBrowser.Api/UserLibrary/ItemsService.cs72
1 files changed, 71 insertions, 1 deletions
diff --git a/MediaBrowser.Api/UserLibrary/ItemsService.cs b/MediaBrowser.Api/UserLibrary/ItemsService.cs
index 39cccf28a..b040d3dd8 100644
--- a/MediaBrowser.Api/UserLibrary/ItemsService.cs
+++ b/MediaBrowser.Api/UserLibrary/ItemsService.cs
@@ -111,6 +111,12 @@ namespace MediaBrowser.Api.UserLibrary
[ApiMember(Name = "NameStartsWithOrGreater", Description = "Optional filter by items whose name is sorted equally or greater than a given input string.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
public string NameStartsWithOrGreater { get; set; }
+ [ApiMember(Name = "NameStartsWith", Description = "Optional filter by items whose name is sorted equally than a given input string.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
+ public string NameStartsWith { get; set; }
+
+ [ApiMember(Name = "NameLessThan", Description = "Optional filter by items whose name is equally or lesser than a given input string.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
+ public string NameLessThan { get; set; }
+
[ApiMember(Name = "AlbumArtistStartsWithOrGreater", Description = "Optional filter by items whose album artist is sorted equally or greater than a given input string.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
public string AlbumArtistStartsWithOrGreater { get; set; }
@@ -220,6 +226,18 @@ namespace MediaBrowser.Api.UserLibrary
[ApiMember(Name = "IsInBoxSet", Description = "Optional filter by items that are in boxsets, or not.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")]
public bool? IsInBoxSet { get; set; }
+
+ [ApiMember(Name = "IsLocked", Description = "Optional filter by items that are locked.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
+ public bool? IsLocked { get; set; }
+
+ [ApiMember(Name = "IsUnidentified", Description = "Optional filter by items that are unidentified by internet metadata providers.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
+ public bool? IsUnidentified { get; set; }
+
+ [ApiMember(Name = "IsPlaceHolder", Description = "Optional filter by items that are placeholders", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
+ public bool? IsPlaceHolder { get; set; }
+
+ [ApiMember(Name = "HasOfficialRating", Description = "Optional filter by items that have official ratings", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
+ public bool? HasOfficialRating { get; set; }
}
/// <summary>
@@ -332,7 +350,7 @@ namespace MediaBrowser.Api.UserLibrary
var userId = user == null ? (Guid?)null : user.Id;
var item = string.IsNullOrEmpty(request.ParentId) ?
- user == null ? (BaseItem)_libraryManager.RootFolder : user.RootFolder :
+ user == null ? _libraryManager.RootFolder : user.RootFolder :
_dtoService.GetItemByDtoId(request.ParentId, userId);
// Default list type = children
@@ -756,6 +774,15 @@ namespace MediaBrowser.Api.UserLibrary
{
items = items.Where(i => string.Compare(request.NameStartsWithOrGreater, i.SortName, StringComparison.CurrentCultureIgnoreCase) < 1);
}
+ if (!string.IsNullOrEmpty(request.NameStartsWith))
+ {
+ items = items.Where(i => string.Compare(request.NameStartsWith, i.SortName.Substring(0, 1), StringComparison.CurrentCultureIgnoreCase) == 0);
+ }
+
+ if (!string.IsNullOrEmpty(request.NameLessThan))
+ {
+ items = items.Where(i => string.Compare(request.NameLessThan, i.SortName, StringComparison.CurrentCultureIgnoreCase) == 1);
+ }
if (!string.IsNullOrEmpty(request.AlbumArtistStartsWithOrGreater))
{
@@ -1019,6 +1046,18 @@ namespace MediaBrowser.Api.UserLibrary
items = items.Where(i => i.IsPlayed(user) == val);
}
+ if (request.IsUnidentified.HasValue)
+ {
+ var val = request.IsUnidentified.Value;
+ items = items.Where(i => i.IsUnidentified == val);
+ }
+
+ if (request.IsLocked.HasValue)
+ {
+ var val = request.IsLocked.Value;
+ items = items.Where(i => i.IsLocked == val);
+ }
+
if (request.ParentIndexNumber.HasValue)
{
var filterValue = request.ParentIndexNumber.Value;
@@ -1117,6 +1156,37 @@ namespace MediaBrowser.Api.UserLibrary
items = items.Where(i => IsYearMismatched(i) == filterValue);
}
+ if (request.HasOfficialRating.HasValue)
+ {
+ var filterValue = request.HasOfficialRating.Value;
+
+ items = items.Where(i =>
+ {
+ var hasValue = !string.IsNullOrEmpty(i.OfficialRating);
+
+ return hasValue == filterValue;
+ });
+ }
+
+ if (request.IsPlaceHolder.HasValue)
+ {
+ var filterValue = request.IsPlaceHolder.Value;
+
+ items = items.Where(i =>
+ {
+ var isPlaceHolder = false;
+
+ var hasPlaceHolder = i as ISupportsPlaceHolders;
+
+ if (hasPlaceHolder != null)
+ {
+ isPlaceHolder = hasPlaceHolder.IsPlaceHolder;
+ }
+
+ return isPlaceHolder == filterValue;
+ });
+ }
+
return items;
}