From 8f22edb503a7272722fa4f693dd53ccd43aefd5d Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Fri, 21 Feb 2014 16:44:10 -0500 Subject: [PATCH] use modular id's on edit page --- MediaBrowser.Api/Library/LibraryService.cs | 27 ++++++++++- .../Providers/IProviderManager.cs | 7 +++ .../Providers/ExternalIdInfo.cs | 12 ++--- .../Manager/ProviderManager.cs | 14 +++++- .../Movies/MovieExternalIds.cs | 46 +++++++++++++++++++ MediaBrowser.Providers/TV/TvExternalIds.cs | 23 ++++++++++ .../Api/DashboardService.cs | 2 + .../MediaBrowser.WebDashboard.csproj | 3 ++ 8 files changed, 123 insertions(+), 11 deletions(-) diff --git a/MediaBrowser.Api/Library/LibraryService.cs b/MediaBrowser.Api/Library/LibraryService.cs index c3fdbb9a0c..4cb20273f5 100644 --- a/MediaBrowser.Api/Library/LibraryService.cs +++ b/MediaBrowser.Api/Library/LibraryService.cs @@ -6,8 +6,10 @@ using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Persistence; +using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; +using MediaBrowser.Model.Providers; using MediaBrowser.Model.Querying; using ServiceStack; using System; @@ -48,6 +50,18 @@ namespace MediaBrowser.Api.Library public int Index { get; set; } } + [Route("/Items/{Id}/ExternalIdInfos", "GET")] + [Api(Description = "Gets external id infos for an item")] + public class GetExternalIdInfos : IReturn> + { + /// + /// Gets or sets the id. + /// + /// The id. + [ApiMember(Name = "Id", Description = "Item Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")] + public string Id { get; set; } + } + /// /// Class GetCriticReviews /// @@ -242,18 +256,29 @@ namespace MediaBrowser.Api.Library private readonly IUserDataManager _userDataManager; private readonly IDtoService _dtoService; + private readonly IProviderManager _providerManager; /// /// Initializes a new instance of the class. /// public LibraryService(IItemRepository itemRepo, ILibraryManager libraryManager, IUserManager userManager, - IDtoService dtoService, IUserDataManager userDataManager) + IDtoService dtoService, IUserDataManager userDataManager, IProviderManager providerManager) { _itemRepo = itemRepo; _libraryManager = libraryManager; _userManager = userManager; _dtoService = dtoService; _userDataManager = userDataManager; + _providerManager = providerManager; + } + + public object Get(GetExternalIdInfos request) + { + var item = _dtoService.GetItemByDtoId(request.Id); + + var infos = _providerManager.GetExternalIdInfos(item).ToList(); + + return ToOptimizedResult(infos); } public object Get(GetMediaFolders request) diff --git a/MediaBrowser.Controller/Providers/IProviderManager.cs b/MediaBrowser.Controller/Providers/IProviderManager.cs index bbe6f1be9a..83ee6ae83c 100644 --- a/MediaBrowser.Controller/Providers/IProviderManager.cs +++ b/MediaBrowser.Controller/Providers/IProviderManager.cs @@ -91,6 +91,13 @@ namespace MediaBrowser.Controller.Providers /// IEnumerable{ExternalUrl}. IEnumerable GetExternalUrls(IHasProviderIds item); + /// + /// Gets the external identifier infos. + /// + /// The item. + /// IEnumerable{ExternalIdInfo}. + IEnumerable GetExternalIdInfos(IHasProviderIds item); + /// /// Saves the metadata. /// diff --git a/MediaBrowser.Model/Providers/ExternalIdInfo.cs b/MediaBrowser.Model/Providers/ExternalIdInfo.cs index 9a79aec93a..e041f06af9 100644 --- a/MediaBrowser.Model/Providers/ExternalIdInfo.cs +++ b/MediaBrowser.Model/Providers/ExternalIdInfo.cs @@ -16,16 +16,10 @@ namespace MediaBrowser.Model.Providers public string Key { get; set; } /// - /// Gets or sets the type of the item. + /// Gets or sets the URL format string. /// - /// The type of the item. - public string ItemType { get; set; } - - /// - /// Gets or sets the format string. - /// - /// The format string. - public string FormatString { get; set; } + /// The URL format string. + public string UrlFormatString { get; set; } } public class ExternalUrl diff --git a/MediaBrowser.Providers/Manager/ProviderManager.cs b/MediaBrowser.Providers/Manager/ProviderManager.cs index 2acc3ed8ae..e95ff9e3d3 100644 --- a/MediaBrowser.Providers/Manager/ProviderManager.cs +++ b/MediaBrowser.Providers/Manager/ProviderManager.cs @@ -656,7 +656,7 @@ namespace MediaBrowser.Providers.Manager { return null; } - + var value = item.GetProviderId(i.Key); if (string.IsNullOrEmpty(value)) @@ -672,5 +672,17 @@ namespace MediaBrowser.Providers.Manager }).Where(i => i != null); } + + public IEnumerable GetExternalIdInfos(IHasProviderIds item) + { + return GetExternalIds(item) + .Select(i => new ExternalIdInfo + { + Name = i.Name, + Key = i.Key, + UrlFormatString = i.UrlFormatString + + }); + } } } \ No newline at end of file diff --git a/MediaBrowser.Providers/Movies/MovieExternalIds.cs b/MediaBrowser.Providers/Movies/MovieExternalIds.cs index b4610688cb..6c86e8688f 100644 --- a/MediaBrowser.Providers/Movies/MovieExternalIds.cs +++ b/MediaBrowser.Providers/Movies/MovieExternalIds.cs @@ -52,6 +52,52 @@ namespace MediaBrowser.Providers.Movies } } + public class RottenTomatoesExternalId : IExternalId + { + public string Name + { + get { return "Rotten Tomatoes"; } + } + + public string Key + { + get { return MetadataProviders.RottenTomatoes.ToString(); } + } + + public string UrlFormatString + { + get { return null; } + } + + public bool Supports(IHasProviderIds item) + { + return item is Movie || item is Trailer || item is MusicVideo; + } + } + + public class MovieDbMovieCollectionExternalId : IExternalId + { + public string Name + { + get { return "TheMovieDb Collection"; } + } + + public string Key + { + get { return MetadataProviders.TmdbCollection.ToString(); } + } + + public string UrlFormatString + { + get { return "http://www.themoviedb.org/collection/{0}"; } + } + + public bool Supports(IHasProviderIds item) + { + return item is Movie || item is Trailer || item is MusicVideo; + } + } + public class MovieDbPersonExternalId : IExternalId { public string Name diff --git a/MediaBrowser.Providers/TV/TvExternalIds.cs b/MediaBrowser.Providers/TV/TvExternalIds.cs index b10acd2b75..60f1321573 100644 --- a/MediaBrowser.Providers/TV/TvExternalIds.cs +++ b/MediaBrowser.Providers/TV/TvExternalIds.cs @@ -51,6 +51,29 @@ namespace MediaBrowser.Providers.TV } } + public class TvdbEpisodeExternalId : IExternalId + { + public string Name + { + get { return "TheTVDB"; } + } + + public string Key + { + get { return MetadataProviders.Tvdb.ToString(); } + } + + public string UrlFormatString + { + get { return null; } + } + + public bool Supports(IHasProviderIds item) + { + return item is Episode; + } + } + public class TvComSeriesExternalId : IExternalId { public string Name diff --git a/MediaBrowser.WebDashboard/Api/DashboardService.cs b/MediaBrowser.WebDashboard/Api/DashboardService.cs index d7c8678230..db0f8eeb74 100644 --- a/MediaBrowser.WebDashboard/Api/DashboardService.cs +++ b/MediaBrowser.WebDashboard/Api/DashboardService.cs @@ -465,6 +465,8 @@ namespace MediaBrowser.WebDashboard.Api "extensions.js", "site.js", "librarybrowser.js", + "editorsidebar.js", + "librarymenu.js", "ratingdialog.js", "aboutpage.js", diff --git a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj index 51f4cbc641..fd05ee7b09 100644 --- a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj +++ b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj @@ -475,6 +475,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest