update wizard function of enable/disable local metadata saving

This commit is contained in:
Luke Pulverenti
2014-02-09 18:08:01 -05:00
parent 6ff59b7e59
commit 44bb192ce0
28 changed files with 166 additions and 288 deletions

View File

@@ -470,7 +470,7 @@ namespace MediaBrowser.Providers.Manager
}));
// Savers
list.AddRange(_savers.Where(i => IsSaverEnabledForItem(i, item, ItemUpdateType.MetadataEdit)).OrderBy(i => i.Name).Select(i => new MetadataPlugin
list.AddRange(_savers.Where(i => IsSaverEnabledForItem(i, item, ItemUpdateType.MetadataEdit, false)).OrderBy(i => i.Name).Select(i => new MetadataPlugin
{
Name = i.Name,
Type = MetadataPluginType.MetadataSaver
@@ -498,6 +498,14 @@ namespace MediaBrowser.Providers.Manager
private readonly ConcurrentDictionary<string, SemaphoreSlim> _fileLocks = new ConcurrentDictionary<string, SemaphoreSlim>();
public MetadataOptions GetMetadataOptions(IHasMetadata item)
{
var type = item.GetType().Name;
return ConfigurationManager.Configuration.MetadataOptions
.FirstOrDefault(i => string.Equals(i.ItemType, type, StringComparison.OrdinalIgnoreCase)) ??
new MetadataOptions();
}
/// <summary>
/// Saves the metadata.
/// </summary>
@@ -506,7 +514,7 @@ namespace MediaBrowser.Providers.Manager
/// <returns>Task.</returns>
public async Task SaveMetadata(IHasMetadata item, ItemUpdateType updateType)
{
foreach (var saver in _savers.Where(i => IsSaverEnabledForItem(i, item, updateType)))
foreach (var saver in _savers.Where(i => IsSaverEnabledForItem(i, item, updateType, true)))
{
_logger.Debug("Saving {0} to {1}.", item.Path ?? item.Name, saver.Name);
@@ -559,10 +567,17 @@ namespace MediaBrowser.Providers.Manager
}
}
private bool IsSaverEnabledForItem(IMetadataSaver saver, IHasMetadata item, ItemUpdateType updateType)
private bool IsSaverEnabledForItem(IMetadataSaver saver, IHasMetadata item, ItemUpdateType updateType, bool enforceConfiguration)
{
var options = GetMetadataOptions(item);
try
{
if (enforceConfiguration && options.DisabledMetadataSavers.Contains(saver.Name, StringComparer.OrdinalIgnoreCase))
{
return false;
}
return saver.IsEnabledFor(item, updateType);
}
catch (Exception ex)