diff options
| -rw-r--r-- | MediaBrowser.Api/Library/LibraryService.cs | 27 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Providers/IProviderManager.cs | 7 | ||||
| -rw-r--r-- | MediaBrowser.Model/Providers/ExternalIdInfo.cs | 12 | ||||
| -rw-r--r-- | MediaBrowser.Providers/Manager/ProviderManager.cs | 14 | ||||
| -rw-r--r-- | MediaBrowser.Providers/Movies/MovieExternalIds.cs | 46 | ||||
| -rw-r--r-- | MediaBrowser.Providers/TV/TvExternalIds.cs | 23 | ||||
| -rw-r--r-- | MediaBrowser.WebDashboard/Api/DashboardService.cs | 2 | ||||
| -rw-r--r-- | MediaBrowser.WebDashboard/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 c3fdbb9a0..4cb20273f 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<List<ExternalIdInfo>> + { + /// <summary> + /// Gets or sets the id. + /// </summary> + /// <value>The id.</value> + [ApiMember(Name = "Id", Description = "Item Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")] + public string Id { get; set; } + } + /// <summary> /// Class GetCriticReviews /// </summary> @@ -242,18 +256,29 @@ namespace MediaBrowser.Api.Library private readonly IUserDataManager _userDataManager; private readonly IDtoService _dtoService; + private readonly IProviderManager _providerManager; /// <summary> /// Initializes a new instance of the <see cref="LibraryService" /> class. /// </summary> 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 bbe6f1be9..83ee6ae83 100644 --- a/MediaBrowser.Controller/Providers/IProviderManager.cs +++ b/MediaBrowser.Controller/Providers/IProviderManager.cs @@ -92,6 +92,13 @@ namespace MediaBrowser.Controller.Providers IEnumerable<ExternalUrl> GetExternalUrls(IHasProviderIds item); /// <summary> + /// Gets the external identifier infos. + /// </summary> + /// <param name="item">The item.</param> + /// <returns>IEnumerable{ExternalIdInfo}.</returns> + IEnumerable<ExternalIdInfo> GetExternalIdInfos(IHasProviderIds item); + + /// <summary> /// Saves the metadata. /// </summary> /// <param name="item">The item.</param> diff --git a/MediaBrowser.Model/Providers/ExternalIdInfo.cs b/MediaBrowser.Model/Providers/ExternalIdInfo.cs index 9a79aec93..e041f06af 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; } /// <summary> - /// Gets or sets the type of the item. - /// </summary> - /// <value>The type of the item.</value> - public string ItemType { get; set; } - - /// <summary> - /// Gets or sets the format string. + /// Gets or sets the URL format string. /// </summary> - /// <value>The format string.</value> - public string FormatString { get; set; } + /// <value>The URL format string.</value> + public string UrlFormatString { get; set; } } public class ExternalUrl diff --git a/MediaBrowser.Providers/Manager/ProviderManager.cs b/MediaBrowser.Providers/Manager/ProviderManager.cs index 2acc3ed8a..e95ff9e3d 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<ExternalIdInfo> 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 b4610688c..6c86e8688 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 b10acd2b7..60f132157 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 d7c867823..db0f8eeb7 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 51f4cbc64..fd05ee7b0 100644 --- a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj +++ b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj @@ -475,6 +475,9 @@ <Content Include="dashboard-ui\scripts\livetvtimers.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
+ <Content Include="dashboard-ui\scripts\editorsidebar.js">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
<Content Include="dashboard-ui\scripts\musicalbumartists.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
|
