diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2015-03-10 22:07:07 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2015-03-10 22:07:07 -0400 |
| commit | f39d460f04a170405407b99cc05ee997fe6dc401 (patch) | |
| tree | 8d0786d05612aff0afc86aeacdb1e7366e5ff5a0 /MediaBrowser.Controller/Entities | |
| parent | 359f90afd4723ad487a68bf059efb458e4c7dc9e (diff) | |
update artist and album fields on song changes
Diffstat (limited to 'MediaBrowser.Controller/Entities')
| -rw-r--r-- | MediaBrowser.Controller/Entities/Audio/MusicArtist.cs | 19 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/BaseItem.cs | 17 |
2 files changed, 24 insertions, 12 deletions
diff --git a/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs b/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs index 2b81450414..fed9689b36 100644 --- a/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs +++ b/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Controller.Providers; +using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Configuration; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Users; @@ -148,12 +149,15 @@ namespace MediaBrowser.Controller.Entities.Audio var totalItems = songs.Count + others.Count; var numComplete = 0; + var childUpdateType = ItemUpdateType.None; + // Refresh songs foreach (var item in songs) { cancellationToken.ThrowIfCancellationRequested(); - await item.RefreshMetadata(refreshOptions, cancellationToken).ConfigureAwait(false); + var updateType = await item.RefreshMetadata(refreshOptions, cancellationToken).ConfigureAwait(false); + childUpdateType = childUpdateType | updateType; numComplete++; double percent = numComplete; @@ -161,15 +165,22 @@ namespace MediaBrowser.Controller.Entities.Audio progress.Report(percent * 100); } + var parentRefreshOptions = refreshOptions; + if (childUpdateType > ItemUpdateType.None) + { + parentRefreshOptions = new MetadataRefreshOptions(refreshOptions); + parentRefreshOptions.MetadataRefreshMode = MetadataRefreshMode.FullRefresh; + } + // Refresh current item - await RefreshMetadata(refreshOptions, cancellationToken).ConfigureAwait(false); + await RefreshMetadata(parentRefreshOptions, cancellationToken).ConfigureAwait(false); // Refresh all non-songs foreach (var item in others) { cancellationToken.ThrowIfCancellationRequested(); - await item.RefreshMetadata(refreshOptions, cancellationToken).ConfigureAwait(false); + var updateType = await item.RefreshMetadata(parentRefreshOptions, cancellationToken).ConfigureAwait(false); numComplete++; double percent = numComplete; diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs index 7a13bfc1c0..df28c282d2 100644 --- a/MediaBrowser.Controller/Entities/BaseItem.cs +++ b/MediaBrowser.Controller/Entities/BaseItem.cs @@ -717,7 +717,7 @@ namespace MediaBrowser.Controller.Entities /// <param name="options">The options.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>true if a provider reports we changed</returns> - public async Task RefreshMetadata(MetadataRefreshOptions options, CancellationToken cancellationToken) + public async Task<ItemUpdateType> RefreshMetadata(MetadataRefreshOptions options, CancellationToken cancellationToken) { var locationType = LocationType; @@ -744,15 +744,16 @@ namespace MediaBrowser.Controller.Entities } } - var dateLastSaved = DateLastSaved; + var refreshOptions = requiresSave + ? new MetadataRefreshOptions(options) + { + ForceSave = true + } + : options; - await ProviderManager.RefreshMetadata(this, options, cancellationToken).ConfigureAwait(false); + var result = await ProviderManager.RefreshMetadata(this, refreshOptions, cancellationToken).ConfigureAwait(false); - // If it wasn't saved by the provider process, save now - if (requiresSave && dateLastSaved == DateLastSaved) - { - await UpdateToRepository(ItemUpdateType.MetadataImport, cancellationToken).ConfigureAwait(false); - } + return result; } [IgnoreDataMember] |
