aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2013-05-22 00:21:36 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2013-05-22 00:21:36 -0400
commit95afe143e8c6cd2dfa93cae3421d64b9885dfcba (patch)
tree54372dc40c2c16cb0be18036a3d4b8e8a504d1ec
parentb310c986568bf44f72a9ca42deab54966a1867f0 (diff)
add refresh item api method
-rw-r--r--MediaBrowser.Api/LibraryService.cs24
-rw-r--r--MediaBrowser.Server.Implementations/Providers/ProviderManager.cs47
2 files changed, 26 insertions, 45 deletions
diff --git a/MediaBrowser.Api/LibraryService.cs b/MediaBrowser.Api/LibraryService.cs
index 87bf08e63..1018053cc 100644
--- a/MediaBrowser.Api/LibraryService.cs
+++ b/MediaBrowser.Api/LibraryService.cs
@@ -96,6 +96,17 @@ namespace MediaBrowser.Api
{
}
+ [Route("/Items/{Id}/Refresh", "POST")]
+ [Api(Description = "Refreshes metadata for an item")]
+ public class RefreshItem : IReturnVoid
+ {
+ [ApiMember(Name = "IsForced", Description = "Indicates if a normal or forced refresh should occur.", IsRequired = true, DataType = "bool", ParameterType = "query", Verb = "POST")]
+ public bool IsForced { get; set; }
+
+ [ApiMember(Name = "Id", Description = "Item Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")]
+ public string Id { get; set; }
+ }
+
[Route("/Items/Counts", "GET")]
[Api(Description = "Gets counts of various item types")]
public class GetItemCounts : IReturn<ItemCounts>
@@ -305,6 +316,17 @@ namespace MediaBrowser.Api
}
/// <summary>
+ /// Posts the specified request.
+ /// </summary>
+ /// <param name="request">The request.</param>
+ public void Post(RefreshItem request)
+ {
+ var item = DtoBuilder.GetItemByClientId(request.Id, _userManager, _libraryManager);
+
+ item.RefreshMetadata(CancellationToken.None, forceRefresh: request.IsForced);
+ }
+
+ /// <summary>
/// Gets the specified request.
/// </summary>
/// <param name="request">The request.</param>
@@ -467,7 +489,7 @@ namespace MediaBrowser.Api
{
var artists1 = item1.RecursiveChildren
.OfType<Audio>()
- .SelectMany(i => new[]{i.AlbumArtist, i.Artist})
+ .SelectMany(i => new[] { i.AlbumArtist, i.Artist })
.Where(i => !string.IsNullOrEmpty(i))
.Distinct(StringComparer.OrdinalIgnoreCase)
.ToList();
diff --git a/MediaBrowser.Server.Implementations/Providers/ProviderManager.cs b/MediaBrowser.Server.Implementations/Providers/ProviderManager.cs
index 2b85268cc..1069f6ef1 100644
--- a/MediaBrowser.Server.Implementations/Providers/ProviderManager.cs
+++ b/MediaBrowser.Server.Implementations/Providers/ProviderManager.cs
@@ -1,5 +1,4 @@
-using MediaBrowser.Common.Extensions;
-using MediaBrowser.Common.IO;
+using MediaBrowser.Common.IO;
using MediaBrowser.Common.Net;
using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Entities;
@@ -98,11 +97,6 @@ namespace MediaBrowser.Server.Implementations.Providers
}
/// <summary>
- /// The _supported providers key
- /// </summary>
- private readonly Guid _supportedProvidersKey = "SupportedProviders".GetMD5();
-
- /// <summary>
/// Runs all metadata providers for an entity, and returns true or false indicating if at least one was refreshed and requires persistence
/// </summary>
/// <param name="item">The item.</param>
@@ -120,40 +114,10 @@ namespace MediaBrowser.Server.Implementations.Providers
cancellationToken.ThrowIfCancellationRequested();
- // Determine if supported providers have changed
- var supportedProviders = MetadataProviders.Where(p => p.Supports(item)).ToList();
-
- BaseProviderInfo supportedProvidersInfo;
-
- var supportedProvidersValue = string.Join(string.Empty, supportedProviders.Select(i => i.GetType().Name));
- var providersChanged = false;
-
- item.ProviderData.TryGetValue(_supportedProvidersKey, out supportedProvidersInfo);
-
- var supportedProvidersHash = supportedProvidersValue.GetMD5();
-
- if (supportedProvidersInfo != null)
- {
- // Force refresh if the supported providers have changed
- providersChanged = force = force || supportedProvidersHash != supportedProvidersInfo.Data;
-
- // If providers have changed, clear provider info and update the supported providers hash
- if (providersChanged)
- {
- _logger.Debug("Providers changed for {0}. Clearing and forcing refresh.", item.Name);
- item.ProviderData.Clear();
- }
- }
-
- if (providersChanged)
- {
- supportedProvidersInfo.Data = supportedProvidersHash;
- }
-
if (force) item.ClearMetaValues();
// Run the normal providers sequentially in order of priority
- foreach (var provider in supportedProviders)
+ foreach (var provider in MetadataProviders.Where(p => p.Supports(item)))
{
cancellationToken.ThrowIfCancellationRequested();
@@ -206,12 +170,7 @@ namespace MediaBrowser.Server.Implementations.Providers
result |= results.Contains(true);
}
- if (providersChanged)
- {
- item.ProviderData[_supportedProvidersKey] = supportedProvidersInfo;
- }
-
- return result || providersChanged;
+ return result;
}
/// <summary>