Only fire metadata savers when appropriate

This commit is contained in:
Luke Pulverenti
2013-06-24 21:22:21 -04:00
parent 12c6bc27f2
commit 92cd71143d
33 changed files with 389 additions and 164 deletions

View File

@@ -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;

View File

@@ -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;

View File

@@ -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)
{

View File

@@ -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.

View File

@@ -0,0 +1,13 @@
using System;
namespace MediaBrowser.Controller.Library
{
[Flags]
public enum ItemUpdateType
{
Unspecified = 1,
MetadataImport = 2,
ImageUpdate = 4,
MetadataEdit = 16
}
}

View File

@@ -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" />

View File

@@ -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();

View File

@@ -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>

View File

@@ -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.