diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-06-24 21:22:21 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-06-24 21:22:21 -0400 |
| commit | 92cd71143daa2d49abb0421a9cb641e9bf4489ae (patch) | |
| tree | b76e22c51681e90d85235fa06f51c76d3f2f9d06 /MediaBrowser.Controller | |
| parent | 12c6bc27f291fda668faaceba2fdc0920c446445 (diff) | |
Only fire metadata savers when appropriate
Diffstat (limited to 'MediaBrowser.Controller')
9 files changed, 62 insertions, 9 deletions
diff --git a/MediaBrowser.Controller/Dto/DtoBuilder.cs b/MediaBrowser.Controller/Dto/DtoBuilder.cs index 2e28d7ad6..2bd338431 100644 --- a/MediaBrowser.Controller/Dto/DtoBuilder.cs +++ b/MediaBrowser.Controller/Dto/DtoBuilder.cs @@ -389,6 +389,11 @@ namespace MediaBrowser.Controller.Dto dto.SortName = item.SortName; } + if (fields.Contains(ItemFields.CustomRating)) + { + dto.CustomRating = item.CustomRating; + } + if (fields.Contains(ItemFields.Taglines)) { dto.Taglines = item.Taglines; diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs index dbfeff747..695ea2583 100644 --- a/MediaBrowser.Controller/Entities/BaseItem.cs +++ b/MediaBrowser.Controller/Entities/BaseItem.cs @@ -834,12 +834,15 @@ namespace MediaBrowser.Controller.Entities cancellationToken.ThrowIfCancellationRequested(); // Get the result from the item task - var changed = await itemRefreshTask.ConfigureAwait(false); + var updateReason = await itemRefreshTask.ConfigureAwait(false); + + var changed = updateReason.HasValue; if (changed || forceSave || themeSongsChanged || themeVideosChanged || localTrailersChanged) { cancellationToken.ThrowIfCancellationRequested(); - await LibraryManager.UpdateItem(this, cancellationToken).ConfigureAwait(false); + + await LibraryManager.UpdateItem(this, updateReason ?? ItemUpdateType.Unspecified, cancellationToken).ConfigureAwait(false); } return changed; diff --git a/MediaBrowser.Controller/Entities/User.cs b/MediaBrowser.Controller/Entities/User.cs index a2c5f98b8..79a813bb5 100644 --- a/MediaBrowser.Controller/Entities/User.cs +++ b/MediaBrowser.Controller/Entities/User.cs @@ -315,7 +315,9 @@ namespace MediaBrowser.Controller.Entities ResolveArgs = null; } - var changed = await ProviderManager.ExecuteMetadataProviders(this, cancellationToken, forceRefresh, allowSlowProviders).ConfigureAwait(false); + var updateReason = await ProviderManager.ExecuteMetadataProviders(this, cancellationToken, forceRefresh, allowSlowProviders).ConfigureAwait(false); + + var changed = updateReason.HasValue; if (changed || forceSave) { diff --git a/MediaBrowser.Controller/Library/ILibraryManager.cs b/MediaBrowser.Controller/Library/ILibraryManager.cs index 46a6d38df..f1d5dce89 100644 --- a/MediaBrowser.Controller/Library/ILibraryManager.cs +++ b/MediaBrowser.Controller/Library/ILibraryManager.cs @@ -152,13 +152,15 @@ namespace MediaBrowser.Controller.Library /// <param name="itemComparers">The item comparers.</param> /// <param name="prescanTasks">The prescan tasks.</param> /// <param name="postscanTasks">The postscan tasks.</param> + /// <param name="savers">The savers.</param> void AddParts(IEnumerable<IResolverIgnoreRule> rules, IEnumerable<IVirtualFolderCreator> pluginFolders, IEnumerable<IItemResolver> resolvers, IEnumerable<IIntroProvider> introProviders, IEnumerable<IBaseItemComparer> itemComparers, IEnumerable<ILibraryPrescanTask> prescanTasks, - IEnumerable<ILibraryPostScanTask> postscanTasks); + IEnumerable<ILibraryPostScanTask> postscanTasks, + IEnumerable<IMetadataSaver> savers); /// <summary> /// Sorts the specified items. @@ -205,9 +207,10 @@ namespace MediaBrowser.Controller.Library /// Updates the item. /// </summary> /// <param name="item">The item.</param> + /// <param name="updateReason">The update reason.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task.</returns> - Task UpdateItem(BaseItem item, CancellationToken cancellationToken); + Task UpdateItem(BaseItem item, ItemUpdateType updateReason, CancellationToken cancellationToken); /// <summary> /// Retrieves the item. diff --git a/MediaBrowser.Controller/Library/ItemUpdateType.cs b/MediaBrowser.Controller/Library/ItemUpdateType.cs new file mode 100644 index 000000000..56ae2cbbd --- /dev/null +++ b/MediaBrowser.Controller/Library/ItemUpdateType.cs @@ -0,0 +1,13 @@ +using System; + +namespace MediaBrowser.Controller.Library +{ + [Flags] + public enum ItemUpdateType + { + Unspecified = 1, + MetadataImport = 2, + ImageUpdate = 4, + MetadataEdit = 16 + } +} diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj index 0bd82eaa7..2c6a6df08 100644 --- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj +++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj @@ -81,6 +81,7 @@ <Compile Include="Library\ILibraryPostScanTask.cs" /> <Compile Include="Library\ILibraryPrescanTask.cs" /> <Compile Include="Library\IMetadataSaver.cs" /> + <Compile Include="Library\ItemUpdateType.cs" /> <Compile Include="Localization\ILocalizationManager.cs" /> <Compile Include="Reflection\TypeMapper.cs" /> <Compile Include="Session\ISessionManager.cs" /> diff --git a/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs b/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs index 29cf43f28..6c3d08a14 100644 --- a/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs +++ b/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs @@ -124,6 +124,17 @@ namespace MediaBrowser.Controller.Providers break; } + case "CriticRating": + { + var text = reader.ReadElementContentAsString(); + float value; + if (float.TryParse(text, NumberStyles.Any, _usCulture, out value)) + { + item.CriticRating = value; + } + + break; + } case "Budget": { var text = reader.ReadElementContentAsString(); @@ -163,6 +174,18 @@ namespace MediaBrowser.Controller.Providers break; } + case "CriticRatingSummary": + { + var val = reader.ReadElementContentAsString(); + + if (!string.IsNullOrWhiteSpace(val)) + { + item.CriticRatingSummary = val; + } + + break; + } + case "TagLine": { var tagline = reader.ReadElementContentAsString(); diff --git a/MediaBrowser.Controller/Providers/BaseMetadataProvider.cs b/MediaBrowser.Controller/Providers/BaseMetadataProvider.cs index 625910c0b..e415c6859 100644 --- a/MediaBrowser.Controller/Providers/BaseMetadataProvider.cs +++ b/MediaBrowser.Controller/Providers/BaseMetadataProvider.cs @@ -75,6 +75,11 @@ namespace MediaBrowser.Controller.Providers } } + public virtual ItemUpdateType ItemUpdateType + { + get { return RequiresInternet ? ItemUpdateType.MetadataEdit : ItemUpdateType.MetadataImport; } + } + /// <summary> /// Gets a value indicating whether [refresh on version change]. /// </summary> diff --git a/MediaBrowser.Controller/Providers/IProviderManager.cs b/MediaBrowser.Controller/Providers/IProviderManager.cs index 7f80973e9..643dbe1c2 100644 --- a/MediaBrowser.Controller/Providers/IProviderManager.cs +++ b/MediaBrowser.Controller/Providers/IProviderManager.cs @@ -55,15 +55,13 @@ namespace MediaBrowser.Controller.Providers /// <param name="force">if set to <c>true</c> [force].</param> /// <param name="allowSlowProviders">if set to <c>true</c> [allow slow providers].</param> /// <returns>Task{System.Boolean}.</returns> - Task<bool> ExecuteMetadataProviders(BaseItem item, CancellationToken cancellationToken, bool force = false, bool allowSlowProviders = true); + Task<ItemUpdateType?> ExecuteMetadataProviders(BaseItem item, CancellationToken cancellationToken, bool force = false, bool allowSlowProviders = true); /// <summary> /// Adds the metadata providers. /// </summary> /// <param name="providers">The providers.</param> - /// <param name="savers">The savers.</param> - void AddParts(IEnumerable<BaseMetadataProvider> providers, - IEnumerable<IMetadataSaver> savers); + void AddParts(IEnumerable<BaseMetadataProvider> providers); /// <summary> /// Gets the save path. |
