aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Providers/Manager/ProviderManager.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Providers/Manager/ProviderManager.cs')
-rw-r--r--MediaBrowser.Providers/Manager/ProviderManager.cs31
1 files changed, 24 insertions, 7 deletions
diff --git a/MediaBrowser.Providers/Manager/ProviderManager.cs b/MediaBrowser.Providers/Manager/ProviderManager.cs
index aec08a292..e0b07ef3a 100644
--- a/MediaBrowser.Providers/Manager/ProviderManager.cs
+++ b/MediaBrowser.Providers/Manager/ProviderManager.cs
@@ -470,7 +470,7 @@ namespace MediaBrowser.Providers.Manager
}));
// Savers
- list.AddRange(_savers.Where(i => i.IsEnabledFor(item, ItemUpdateType.MetadataEdit)).OrderBy(i => i.Name).Select(i => new MetadataPlugin
+ list.AddRange(_savers.Where(i => IsSaverEnabledForItem(i, item, ItemUpdateType.MetadataEdit)).OrderBy(i => i.Name).Select(i => new MetadataPlugin
{
Name = i.Name,
Type = MetadataPluginType.MetadataSaver
@@ -506,7 +506,7 @@ namespace MediaBrowser.Providers.Manager
/// <returns>Task.</returns>
public async Task SaveMetadata(IHasMetadata item, ItemUpdateType updateType)
{
- foreach (var saver in _savers.Where(i => i.IsEnabledFor(item, updateType)))
+ foreach (var saver in _savers.Where(i => IsSaverEnabledForItem(i, item, updateType)))
{
_logger.Debug("Saving {0} to {1}.", item.Path ?? item.Name, saver.Name);
@@ -514,13 +514,17 @@ namespace MediaBrowser.Providers.Manager
if (fileSaver != null)
{
- var locationType = item.LocationType;
- if (locationType == LocationType.Remote || locationType == LocationType.Virtual)
+ string path = null;
+
+ try
{
- throw new ArgumentException("Only file-system based items can save metadata.");
+ path = fileSaver.GetSavePath(item);
+ }
+ catch (Exception ex)
+ {
+ _logger.ErrorException("Error in {0} GetSavePath", ex, saver.Name);
+ continue;
}
-
- var path = fileSaver.GetSavePath(item);
var semaphore = _fileLocks.GetOrAdd(path, key => new SemaphoreSlim(1, 1));
@@ -554,5 +558,18 @@ namespace MediaBrowser.Providers.Manager
}
}
}
+
+ private bool IsSaverEnabledForItem(IMetadataSaver saver, IHasMetadata item, ItemUpdateType updateType)
+ {
+ try
+ {
+ return saver.IsEnabledFor(item, updateType);
+ }
+ catch (Exception ex)
+ {
+ _logger.ErrorException("Error in {0}.IsEnabledFor", ex, saver.Name);
+ return false;
+ }
+ }
}
}