From fe2eb6cb01564662df01aef87afe2bff51971c1b Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Fri, 4 Oct 2013 13:04:18 -0400 Subject: [PATCH] fixes #573 - Support media info for intros --- .../UserLibrary/UserLibraryService.cs | 32 +++++- .../Library/IIntroProvider.cs | 22 +++- .../Library/ILibraryManager.cs | 13 ++- MediaBrowser.Model/ApiClient/IApiClient.cs | 5 +- .../MediaBrowser.Providers.csproj | 1 + MediaBrowser.Providers/RefreshIntrosTask.cs | 105 ++++++++++++++++++ .../Library/LibraryManager.cs | 70 +++++++++++- Nuget/MediaBrowser.Common.Internal.nuspec | 4 +- Nuget/MediaBrowser.Common.nuspec | 2 +- Nuget/MediaBrowser.Server.Core.nuspec | 4 +- 10 files changed, 242 insertions(+), 16 deletions(-) create mode 100644 MediaBrowser.Providers/RefreshIntrosTask.cs diff --git a/MediaBrowser.Api/UserLibrary/UserLibraryService.cs b/MediaBrowser.Api/UserLibrary/UserLibraryService.cs index a43ed276df..9c6f5d826e 100644 --- a/MediaBrowser.Api/UserLibrary/UserLibraryService.cs +++ b/MediaBrowser.Api/UserLibrary/UserLibraryService.cs @@ -58,7 +58,7 @@ namespace MediaBrowser.Api.UserLibrary /// [Route("/Users/{UserId}/Items/{Id}/Intros", "GET")] [Api(("Gets intros to play before the main media item plays"))] - public class GetIntros : IReturn> + public class GetIntros : IReturn { /// /// Gets or sets the user id. @@ -552,7 +552,21 @@ namespace MediaBrowser.Api.UserLibrary var item = string.IsNullOrEmpty(request.Id) ? user.RootFolder : _dtoService.GetItemByDtoId(request.Id, user.Id); - var result = _libraryManager.GetIntros(item, user); + var items = _libraryManager.GetIntros(item, user); + + // Get everything + var fields = Enum.GetNames(typeof(ItemFields)) + .Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true)) + .ToList(); + + var dtos = items.Select(i => _dtoService.GetBaseItemDto(i, fields, user)) + .ToArray(); + + var result = new ItemsResult + { + Items = dtos, + TotalRecordCount = dtos.Length + }; return ToOptimizedResult(result); } @@ -579,6 +593,13 @@ namespace MediaBrowser.Api.UserLibrary return ToOptimizedResult(dto); } + /// + /// Marks the favorite. + /// + /// The user id. + /// The item id. + /// if set to true [is favorite]. + /// Task{UserItemDataDto}. private async Task MarkFavorite(Guid userId, string itemId, bool isFavorite) { var user = _userManager.GetUserById(userId); @@ -622,6 +643,13 @@ namespace MediaBrowser.Api.UserLibrary return ToOptimizedResult(dto); } + /// + /// Updates the user item rating. + /// + /// The user id. + /// The item id. + /// if set to true [likes]. + /// Task{UserItemDataDto}. private async Task UpdateUserItemRating(Guid userId, string itemId, bool? likes) { var user = _userManager.GetUserById(userId); diff --git a/MediaBrowser.Controller/Library/IIntroProvider.cs b/MediaBrowser.Controller/Library/IIntroProvider.cs index 990fa933c8..224ca2271a 100644 --- a/MediaBrowser.Controller/Library/IIntroProvider.cs +++ b/MediaBrowser.Controller/Library/IIntroProvider.cs @@ -1,4 +1,5 @@ using MediaBrowser.Controller.Entities; +using System; using System.Collections.Generic; namespace MediaBrowser.Controller.Library @@ -14,12 +15,27 @@ namespace MediaBrowser.Controller.Library /// The item. /// The user. /// IEnumerable{System.String}. - IEnumerable GetIntros(BaseItem item, User user); + IEnumerable GetIntros(BaseItem item, User user); /// - /// Gets all intros. + /// Gets all intro files. /// /// IEnumerable{System.String}. - IEnumerable GetAllIntros(); + IEnumerable GetAllIntroFiles(); + } + + public class IntroInfo + { + /// + /// Gets or sets the path. + /// + /// The path. + public string Path { get; set; } + + /// + /// Gets or sets the item id. + /// + /// The item id. + public Guid? ItemId { get; set; } } } diff --git a/MediaBrowser.Controller/Library/ILibraryManager.cs b/MediaBrowser.Controller/Library/ILibraryManager.cs index 3419bf5e08..f930385d34 100644 --- a/MediaBrowser.Controller/Library/ILibraryManager.cs +++ b/MediaBrowser.Controller/Library/ILibraryManager.cs @@ -48,6 +48,11 @@ namespace MediaBrowser.Controller.Library /// The root folder. AggregateFolder RootFolder { get; } + /// + /// Gets the person sync. + /// + /// The name. + /// Person. Person GetPersonSync(string name); /// @@ -143,7 +148,13 @@ namespace MediaBrowser.Controller.Library /// The item. /// The user. /// IEnumerable{System.String}. - IEnumerable GetIntros(BaseItem item, User user); + IEnumerable