diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-05-22 00:21:36 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-05-22 00:21:36 -0400 |
| commit | 95afe143e8c6cd2dfa93cae3421d64b9885dfcba (patch) | |
| tree | 54372dc40c2c16cb0be18036a3d4b8e8a504d1ec | |
| parent | b310c986568bf44f72a9ca42deab54966a1867f0 (diff) | |
add refresh item api method
| -rw-r--r-- | MediaBrowser.Api/LibraryService.cs | 24 | ||||
| -rw-r--r-- | MediaBrowser.Server.Implementations/Providers/ProviderManager.cs | 47 |
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> |
