From 759f5a856064450acdb4c26839d6d890afb99a17 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 19 Jun 2016 02:18:29 -0400 Subject: update task results --- MediaBrowser.Api/Library/LibraryService.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'MediaBrowser.Api/Library/LibraryService.cs') diff --git a/MediaBrowser.Api/Library/LibraryService.cs b/MediaBrowser.Api/Library/LibraryService.cs index f9b3def97..4cd6a66ef 100644 --- a/MediaBrowser.Api/Library/LibraryService.cs +++ b/MediaBrowser.Api/Library/LibraryService.cs @@ -493,7 +493,7 @@ namespace MediaBrowser.Api.Library } } - public object Get(GetDownload request) + public Task Get(GetDownload request) { var item = _libraryManager.GetItemById(request.Id); var auth = _authContext.GetAuthorizationInfo(Request); @@ -552,7 +552,7 @@ namespace MediaBrowser.Api.Library } } - public object Get(GetFile request) + public Task Get(GetFile request) { var item = _libraryManager.GetItemById(request.Id); var locationType = item.LocationType; @@ -565,7 +565,7 @@ namespace MediaBrowser.Api.Library throw new ArgumentException("This command cannot be used for directories."); } - return ToStaticFileResult(item.Path); + return ResultFactory.GetStaticFileResult(Request, item.Path); } /// -- cgit v1.2.3 From 671a5126996e454125abb16cee56607bdd94be9f Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Fri, 8 Jul 2016 14:11:13 -0400 Subject: add null checks to get theme media --- MediaBrowser.Api/Library/LibraryService.cs | 2 ++ 1 file changed, 2 insertions(+) (limited to 'MediaBrowser.Api/Library/LibraryService.cs') diff --git a/MediaBrowser.Api/Library/LibraryService.cs b/MediaBrowser.Api/Library/LibraryService.cs index 4cd6a66ef..1949dea12 100644 --- a/MediaBrowser.Api/Library/LibraryService.cs +++ b/MediaBrowser.Api/Library/LibraryService.cs @@ -839,6 +839,7 @@ namespace MediaBrowser.Api.Library var dtoOptions = GetDtoOptions(request); var dtos = GetThemeSongIds(item).Select(_libraryManager.GetItemById) + .Where(i => i != null) .OrderBy(i => i.SortName) .Select(i => _dtoService.GetBaseItemDto(i, dtoOptions, user, item)); @@ -882,6 +883,7 @@ namespace MediaBrowser.Api.Library var dtoOptions = GetDtoOptions(request); var dtos = GetThemeVideoIds(item).Select(_libraryManager.GetItemById) + .Where(i => i != null) .OrderBy(i => i.SortName) .Select(i => _dtoService.GetBaseItemDto(i, dtoOptions, user, item)); -- cgit v1.2.3 From df5cfc0c2580c5bab0a588279c97dec9145736d4 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Fri, 22 Jul 2016 13:54:43 -0400 Subject: update more from/similar --- MediaBrowser.Api/Library/LibraryService.cs | 3 ++- MediaBrowser.Api/SimilarItemsHelper.cs | 8 ++++++++ MediaBrowser.Api/UserLibrary/BaseItemsRequest.cs | 2 ++ MediaBrowser.Api/UserLibrary/ItemsService.cs | 6 ++++++ MediaBrowser.Controller/Entities/InternalItemsQuery.cs | 2 ++ .../Persistence/SqliteItemRepository.cs | 14 ++++++++++++++ 6 files changed, 34 insertions(+), 1 deletion(-) (limited to 'MediaBrowser.Api/Library/LibraryService.cs') diff --git a/MediaBrowser.Api/Library/LibraryService.cs b/MediaBrowser.Api/Library/LibraryService.cs index 1949dea12..e5a40ba2f 100644 --- a/MediaBrowser.Api/Library/LibraryService.cs +++ b/MediaBrowser.Api/Library/LibraryService.cs @@ -350,7 +350,8 @@ namespace MediaBrowser.Api.Library Fields = request.Fields, Id = request.Id, Limit = request.Limit, - UserId = request.UserId + UserId = request.UserId, + ExcludeArtistNames = request.ExcludeArtistNames }); } if (item is MusicArtist) diff --git a/MediaBrowser.Api/SimilarItemsHelper.cs b/MediaBrowser.Api/SimilarItemsHelper.cs index c98a91a55..eea2814a6 100644 --- a/MediaBrowser.Api/SimilarItemsHelper.cs +++ b/MediaBrowser.Api/SimilarItemsHelper.cs @@ -25,6 +25,8 @@ namespace MediaBrowser.Api /// The id. [ApiMember(Name = "Id", Description = "Item Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")] public string Id { get; set; } + + public string ExcludeArtistNames { get; set; } } public class BaseGetSimilarItems : IReturn, IHasItemFields @@ -70,6 +72,12 @@ namespace MediaBrowser.Api Recursive = true }; + // ExcludeArtistNames + if (!string.IsNullOrEmpty(request.ExcludeArtistNames)) + { + query.ExcludeArtistNames = request.ExcludeArtistNames.Split('|'); + } + var inputItems = libraryManager.GetItemList(query); var items = GetSimilaritems(item, libraryManager, inputItems, getSimilarityScore) diff --git a/MediaBrowser.Api/UserLibrary/BaseItemsRequest.cs b/MediaBrowser.Api/UserLibrary/BaseItemsRequest.cs index 5a66f872f..60bcc91b0 100644 --- a/MediaBrowser.Api/UserLibrary/BaseItemsRequest.cs +++ b/MediaBrowser.Api/UserLibrary/BaseItemsRequest.cs @@ -266,6 +266,8 @@ namespace MediaBrowser.Api.UserLibrary [ApiMember(Name = "Artists", Description = "Optional. If specified, results will be filtered based on artist. This allows multiple, pipe delimeted.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)] public string Artists { get; set; } + public string ExcludeArtistNames { get; set; } + [ApiMember(Name = "ArtistIds", Description = "Optional. If specified, results will be filtered based on artist. This allows multiple, pipe delimeted.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)] public string ArtistIds { get; set; } diff --git a/MediaBrowser.Api/UserLibrary/ItemsService.cs b/MediaBrowser.Api/UserLibrary/ItemsService.cs index 74b33fbb7..4db1ed9f4 100644 --- a/MediaBrowser.Api/UserLibrary/ItemsService.cs +++ b/MediaBrowser.Api/UserLibrary/ItemsService.cs @@ -368,6 +368,12 @@ namespace MediaBrowser.Api.UserLibrary query.ArtistNames = request.Artists.Split('|'); } + // ExcludeArtistNames + if (!string.IsNullOrEmpty(request.ExcludeArtistNames)) + { + query.ExcludeArtistNames = request.ExcludeArtistNames.Split('|'); + } + // Albums if (!string.IsNullOrEmpty(request.Albums)) { diff --git a/MediaBrowser.Controller/Entities/InternalItemsQuery.cs b/MediaBrowser.Controller/Entities/InternalItemsQuery.cs index 5faf85b2a..bf2a50202 100644 --- a/MediaBrowser.Controller/Entities/InternalItemsQuery.cs +++ b/MediaBrowser.Controller/Entities/InternalItemsQuery.cs @@ -138,6 +138,7 @@ namespace MediaBrowser.Controller.Entities public string[] AlbumNames { get; set; } public string[] ArtistNames { get; set; } + public string[] ExcludeArtistNames { get; set; } public string AncestorWithPresentationUniqueKey { get; set; } public bool GroupByPresentationUniqueKey { get; set; } @@ -153,6 +154,7 @@ namespace MediaBrowser.Controller.Entities AlbumNames = new string[] { }; ArtistNames = new string[] { }; + ExcludeArtistNames = new string[] { }; ExcludeProviderIds = new Dictionary(StringComparer.OrdinalIgnoreCase); BlockUnratedItems = new UnratedItem[] { }; diff --git a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs index a33e4f3e4..4f8f31a75 100644 --- a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs +++ b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs @@ -2883,6 +2883,20 @@ namespace MediaBrowser.Server.Implementations.Persistence whereClauses.Add(clause); } + if (query.ExcludeArtistNames.Length > 0) + { + var clauses = new List(); + var index = 0; + foreach (var artist in query.ExcludeArtistNames) + { + clauses.Add("@ExcludeArtistName" + index + " not in (select CleanValue from itemvalues where ItemId=Guid and Type <= 1)"); + cmd.Parameters.Add(cmd, "@ExcludeArtistName" + index, DbType.String).Value = artist.RemoveDiacritics(); + index++; + } + var clause = "(" + string.Join(" AND ", clauses.ToArray()) + ")"; + whereClauses.Add(clause); + } + if (query.GenreIds.Length > 0) { // Todo: improve without having to do this -- cgit v1.2.3 From 7475722ecf1f36951ae92fafaa188135d33bbed2 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Fri, 22 Jul 2016 18:10:39 -0400 Subject: switch to ExcludeArtistIds --- MediaBrowser.Api/Library/LibraryService.cs | 2 +- MediaBrowser.Api/SimilarItemsHelper.cs | 8 ++++---- MediaBrowser.Api/UserLibrary/BaseItemsRequest.cs | 2 +- MediaBrowser.Api/UserLibrary/ItemsService.cs | 6 +++--- MediaBrowser.Controller/Entities/InternalItemsQuery.cs | 4 ++-- .../Persistence/SqliteItemRepository.cs | 14 +++++++++----- 6 files changed, 20 insertions(+), 16 deletions(-) (limited to 'MediaBrowser.Api/Library/LibraryService.cs') diff --git a/MediaBrowser.Api/Library/LibraryService.cs b/MediaBrowser.Api/Library/LibraryService.cs index e5a40ba2f..14a771db0 100644 --- a/MediaBrowser.Api/Library/LibraryService.cs +++ b/MediaBrowser.Api/Library/LibraryService.cs @@ -351,7 +351,7 @@ namespace MediaBrowser.Api.Library Id = request.Id, Limit = request.Limit, UserId = request.UserId, - ExcludeArtistNames = request.ExcludeArtistNames + ExcludeArtistIds = request.ExcludeArtistIds }); } if (item is MusicArtist) diff --git a/MediaBrowser.Api/SimilarItemsHelper.cs b/MediaBrowser.Api/SimilarItemsHelper.cs index eea2814a6..a1e47bd8f 100644 --- a/MediaBrowser.Api/SimilarItemsHelper.cs +++ b/MediaBrowser.Api/SimilarItemsHelper.cs @@ -26,7 +26,7 @@ namespace MediaBrowser.Api [ApiMember(Name = "Id", Description = "Item Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")] public string Id { get; set; } - public string ExcludeArtistNames { get; set; } + public string ExcludeArtistIds { get; set; } } public class BaseGetSimilarItems : IReturn, IHasItemFields @@ -72,10 +72,10 @@ namespace MediaBrowser.Api Recursive = true }; - // ExcludeArtistNames - if (!string.IsNullOrEmpty(request.ExcludeArtistNames)) + // ExcludeArtistIds + if (!string.IsNullOrEmpty(request.ExcludeArtistIds)) { - query.ExcludeArtistNames = request.ExcludeArtistNames.Split('|'); + query.ExcludeArtistIds = request.ExcludeArtistIds.Split('|'); } var inputItems = libraryManager.GetItemList(query); diff --git a/MediaBrowser.Api/UserLibrary/BaseItemsRequest.cs b/MediaBrowser.Api/UserLibrary/BaseItemsRequest.cs index 60bcc91b0..3e9a541c0 100644 --- a/MediaBrowser.Api/UserLibrary/BaseItemsRequest.cs +++ b/MediaBrowser.Api/UserLibrary/BaseItemsRequest.cs @@ -266,7 +266,7 @@ namespace MediaBrowser.Api.UserLibrary [ApiMember(Name = "Artists", Description = "Optional. If specified, results will be filtered based on artist. This allows multiple, pipe delimeted.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)] public string Artists { get; set; } - public string ExcludeArtistNames { get; set; } + public string ExcludeArtistIds { get; set; } [ApiMember(Name = "ArtistIds", Description = "Optional. If specified, results will be filtered based on artist. This allows multiple, pipe delimeted.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)] public string ArtistIds { get; set; } diff --git a/MediaBrowser.Api/UserLibrary/ItemsService.cs b/MediaBrowser.Api/UserLibrary/ItemsService.cs index 4db1ed9f4..b4d88a7f8 100644 --- a/MediaBrowser.Api/UserLibrary/ItemsService.cs +++ b/MediaBrowser.Api/UserLibrary/ItemsService.cs @@ -368,10 +368,10 @@ namespace MediaBrowser.Api.UserLibrary query.ArtistNames = request.Artists.Split('|'); } - // ExcludeArtistNames - if (!string.IsNullOrEmpty(request.ExcludeArtistNames)) + // ExcludeArtistIds + if (!string.IsNullOrEmpty(request.ExcludeArtistIds)) { - query.ExcludeArtistNames = request.ExcludeArtistNames.Split('|'); + query.ExcludeArtistIds = request.ExcludeArtistIds.Split('|'); } // Albums diff --git a/MediaBrowser.Controller/Entities/InternalItemsQuery.cs b/MediaBrowser.Controller/Entities/InternalItemsQuery.cs index bf2a50202..69cab5ec5 100644 --- a/MediaBrowser.Controller/Entities/InternalItemsQuery.cs +++ b/MediaBrowser.Controller/Entities/InternalItemsQuery.cs @@ -138,7 +138,7 @@ namespace MediaBrowser.Controller.Entities public string[] AlbumNames { get; set; } public string[] ArtistNames { get; set; } - public string[] ExcludeArtistNames { get; set; } + public string[] ExcludeArtistIds { get; set; } public string AncestorWithPresentationUniqueKey { get; set; } public bool GroupByPresentationUniqueKey { get; set; } @@ -154,7 +154,7 @@ namespace MediaBrowser.Controller.Entities AlbumNames = new string[] { }; ArtistNames = new string[] { }; - ExcludeArtistNames = new string[] { }; + ExcludeArtistIds = new string[] { }; ExcludeProviderIds = new Dictionary(StringComparer.OrdinalIgnoreCase); BlockUnratedItems = new UnratedItem[] { }; diff --git a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs index 4f8f31a75..7f556cfb0 100644 --- a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs +++ b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs @@ -2883,15 +2883,19 @@ namespace MediaBrowser.Server.Implementations.Persistence whereClauses.Add(clause); } - if (query.ExcludeArtistNames.Length > 0) + if (query.ExcludeArtistIds.Length > 0) { var clauses = new List(); var index = 0; - foreach (var artist in query.ExcludeArtistNames) + foreach (var artistId in query.ExcludeArtistIds) { - clauses.Add("@ExcludeArtistName" + index + " not in (select CleanValue from itemvalues where ItemId=Guid and Type <= 1)"); - cmd.Parameters.Add(cmd, "@ExcludeArtistName" + index, DbType.String).Value = artist.RemoveDiacritics(); - index++; + var artistItem = RetrieveItem(new Guid(artistId)); + if (artistItem != null) + { + clauses.Add("@ExcludeArtistName" + index + " not in (select CleanValue from itemvalues where ItemId=Guid and Type <= 1)"); + cmd.Parameters.Add(cmd, "@ExcludeArtistName" + index, DbType.String).Value = artistItem.Name.RemoveDiacritics(); + index++; + } } var clause = "(" + string.Join(" AND ", clauses.ToArray()) + ")"; whereClauses.Add(clause); -- cgit v1.2.3