aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MediaBrowser.Api/Library/LibraryService.cs27
-rw-r--r--MediaBrowser.Controller/Providers/IProviderManager.cs7
-rw-r--r--MediaBrowser.Model/Providers/ExternalIdInfo.cs12
-rw-r--r--MediaBrowser.Providers/Manager/ProviderManager.cs14
-rw-r--r--MediaBrowser.Providers/Movies/MovieExternalIds.cs46
-rw-r--r--MediaBrowser.Providers/TV/TvExternalIds.cs23
-rw-r--r--MediaBrowser.WebDashboard/Api/DashboardService.cs2
-rw-r--r--MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj3
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>