diff options
Diffstat (limited to 'MediaBrowser.Api/ItemRefreshService.cs')
| -rw-r--r-- | MediaBrowser.Api/ItemRefreshService.cs | 104 |
1 files changed, 5 insertions, 99 deletions
diff --git a/MediaBrowser.Api/ItemRefreshService.cs b/MediaBrowser.Api/ItemRefreshService.cs index 6a7b4826c..419077f21 100644 --- a/MediaBrowser.Api/ItemRefreshService.cs +++ b/MediaBrowser.Api/ItemRefreshService.cs @@ -1,13 +1,7 @@ -using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.Entities.Audio; -using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Net; using MediaBrowser.Controller.Providers; using ServiceStack; -using System; -using System.Linq; -using System.Threading; -using System.Threading.Tasks; namespace MediaBrowser.Api { @@ -40,41 +34,12 @@ namespace MediaBrowser.Api public class ItemRefreshService : BaseApiService { private readonly ILibraryManager _libraryManager; + private readonly IProviderManager _providerManager; - public ItemRefreshService(ILibraryManager libraryManager) + public ItemRefreshService(ILibraryManager libraryManager, IProviderManager providerManager) { _libraryManager = libraryManager; - } - - private async Task RefreshArtist(RefreshItem request, MusicArtist item) - { - var cancellationToken = CancellationToken.None; - - var albums = _libraryManager.RootFolder - .GetRecursiveChildren() - .OfType<MusicAlbum>() - .Where(i => i.HasAnyArtist(item.Name)) - .ToList(); - - var musicArtists = albums - .Select(i => i.Parent) - .OfType<MusicArtist>() - .ToList(); - - var options = GetRefreshOptions(request); - - var musicArtistRefreshTasks = musicArtists.Select(i => i.ValidateChildren(new Progress<double>(), cancellationToken, options, true)); - - await Task.WhenAll(musicArtistRefreshTasks).ConfigureAwait(false); - - try - { - await item.RefreshMetadata(options, CancellationToken.None).ConfigureAwait(false); - } - catch (Exception ex) - { - Logger.ErrorException("Error refreshing library", ex); - } + _providerManager = providerManager; } /// <summary> @@ -85,68 +50,9 @@ namespace MediaBrowser.Api { var item = _libraryManager.GetItemById(request.Id); - var task = item is MusicArtist ? RefreshArtist(request, (MusicArtist)item) : RefreshItem(request, item); - - Task.WaitAll(task); - } - - /// <summary> - /// Refreshes the item. - /// </summary> - /// <param name="request">The request.</param> - /// <returns>Task.</returns> - private async Task RefreshItem(RefreshItem request, BaseItem item) - { var options = GetRefreshOptions(request); - try - { - await item.RefreshMetadata(options, CancellationToken.None).ConfigureAwait(false); - - if (item.IsFolder) - { - // Collection folders don't validate their children so we'll have to simulate that here - var collectionFolder = item as CollectionFolder; - - if (collectionFolder != null) - { - await RefreshCollectionFolderChildren(request, collectionFolder).ConfigureAwait(false); - } - else - { - var folder = (Folder)item; - - await folder.ValidateChildren(new Progress<double>(), CancellationToken.None, options, request.Recursive).ConfigureAwait(false); - } - } - } - catch (Exception ex) - { - Logger.ErrorException("Error refreshing library", ex); - } - } - - /// <summary> - /// Refreshes the collection folder children. - /// </summary> - /// <param name="request">The request.</param> - /// <param name="collectionFolder">The collection folder.</param> - /// <returns>Task.</returns> - private async Task RefreshCollectionFolderChildren(RefreshItem request, CollectionFolder collectionFolder) - { - var options = GetRefreshOptions(request); - - foreach (var child in collectionFolder.Children.ToList()) - { - await child.RefreshMetadata(options, CancellationToken.None).ConfigureAwait(false); - - if (child.IsFolder) - { - var folder = (Folder)child; - - await folder.ValidateChildren(new Progress<double>(), CancellationToken.None, options, request.Recursive).ConfigureAwait(false); - } - } + _providerManager.QueueRefresh(item.Id, options); } private MetadataRefreshOptions GetRefreshOptions(BaseRefreshRequest request) |
