From 92cd71143daa2d49abb0421a9cb641e9bf4489ae Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Mon, 24 Jun 2013 21:22:21 -0400 Subject: Only fire metadata savers when appropriate --- MediaBrowser.Controller/Dto/DtoBuilder.cs | 5 +++++ MediaBrowser.Controller/Entities/BaseItem.cs | 7 +++++-- MediaBrowser.Controller/Entities/User.cs | 4 +++- MediaBrowser.Controller/Library/ILibraryManager.cs | 7 +++++-- MediaBrowser.Controller/Library/ItemUpdateType.cs | 13 ++++++++++++ .../MediaBrowser.Controller.csproj | 1 + .../Providers/BaseItemXmlParser.cs | 23 ++++++++++++++++++++++ .../Providers/BaseMetadataProvider.cs | 5 +++++ .../Providers/IProviderManager.cs | 6 ++---- 9 files changed, 62 insertions(+), 9 deletions(-) create mode 100644 MediaBrowser.Controller/Library/ItemUpdateType.cs (limited to 'MediaBrowser.Controller') diff --git a/MediaBrowser.Controller/Dto/DtoBuilder.cs b/MediaBrowser.Controller/Dto/DtoBuilder.cs index 2e28d7ad63..2bd338431c 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 dbfeff7472..695ea25836 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 a2c5f98b85..79a813bb5e 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 46a6d38df1..f1d5dce89c 100644 --- a/MediaBrowser.Controller/Library/ILibraryManager.cs +++ b/MediaBrowser.Controller/Library/ILibraryManager.cs @@ -152,13 +152,15 @@ namespace MediaBrowser.Controller.Library /// The item comparers. /// The prescan tasks. /// The postscan tasks. + /// The savers. void AddParts(IEnumerable rules, IEnumerable pluginFolders, IEnumerable resolvers, IEnumerable introProviders, IEnumerable itemComparers, IEnumerable prescanTasks, - IEnumerable postscanTasks); + IEnumerable postscanTasks, + IEnumerable savers); /// /// Sorts the specified items. @@ -205,9 +207,10 @@ namespace MediaBrowser.Controller.Library /// Updates the item. /// /// The item. + /// The update reason. /// The cancellation token. /// Task. - Task UpdateItem(BaseItem item, CancellationToken cancellationToken); + Task UpdateItem(BaseItem item, ItemUpdateType updateReason, CancellationToken cancellationToken); /// /// Retrieves the item. diff --git a/MediaBrowser.Controller/Library/ItemUpdateType.cs b/MediaBrowser.Controller/Library/ItemUpdateType.cs new file mode 100644 index 0000000000..56ae2cbbdc --- /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 0bd82eaa7c..2c6a6df08b 100644 --- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj +++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj @@ -81,6 +81,7 @@ + diff --git a/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs b/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs index 29cf43f288..6c3d08a14f 100644 --- a/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs +++ b/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs @@ -122,6 +122,17 @@ namespace MediaBrowser.Controller.Providers item.DisplayMediaType = type; } + break; + } + case "CriticRating": + { + var text = reader.ReadElementContentAsString(); + float value; + if (float.TryParse(text, NumberStyles.Any, _usCulture, out value)) + { + item.CriticRating = value; + } + break; } case "Budget": @@ -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 625910c0bc..e415c68599 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; } + } + /// /// Gets a value indicating whether [refresh on version change]. /// diff --git a/MediaBrowser.Controller/Providers/IProviderManager.cs b/MediaBrowser.Controller/Providers/IProviderManager.cs index 7f80973e9f..643dbe1c2c 100644 --- a/MediaBrowser.Controller/Providers/IProviderManager.cs +++ b/MediaBrowser.Controller/Providers/IProviderManager.cs @@ -55,15 +55,13 @@ namespace MediaBrowser.Controller.Providers /// if set to true [force]. /// if set to true [allow slow providers]. /// Task{System.Boolean}. - Task ExecuteMetadataProviders(BaseItem item, CancellationToken cancellationToken, bool force = false, bool allowSlowProviders = true); + Task ExecuteMetadataProviders(BaseItem item, CancellationToken cancellationToken, bool force = false, bool allowSlowProviders = true); /// /// Adds the metadata providers. /// /// The providers. - /// The savers. - void AddParts(IEnumerable providers, - IEnumerable savers); + void AddParts(IEnumerable providers); /// /// Gets the save path. -- cgit v1.2.3