aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2013-06-23 13:48:30 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2013-06-23 13:48:30 -0400
commitd6cf7b51acda145d32c9944f1b66728c7e09a9f8 (patch)
tree461ce04491def89ecf8b0aa41996a3f700e04334 /MediaBrowser.Server.Implementations
parentcc2cfabda83aa29532bc1808174e888b6fde2cd4 (diff)
added movie, series, folder and episode xml saving support
Diffstat (limited to 'MediaBrowser.Server.Implementations')
-rw-r--r--MediaBrowser.Server.Implementations/Library/LibraryManager.cs45
-rw-r--r--MediaBrowser.Server.Implementations/Providers/ProviderManager.cs43
2 files changed, 49 insertions, 39 deletions
diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
index e174b9a23..d1b7634fb 100644
--- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
+++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
@@ -74,12 +74,6 @@ namespace MediaBrowser.Server.Implementations.Library
private IEnumerable<IBaseItemComparer> Comparers { get; set; }
/// <summary>
- /// Gets or sets the savers.
- /// </summary>
- /// <value>The savers.</value>
- private IEnumerable<IMetadataSaver> Savers { get; set; }
-
- /// <summary>
/// Gets the active item repository
/// </summary>
/// <value>The item repository.</value>
@@ -197,15 +191,13 @@ namespace MediaBrowser.Server.Implementations.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>
public void AddParts(IEnumerable<IResolverIgnoreRule> rules,
IEnumerable<IVirtualFolderCreator> pluginFolders,
IEnumerable<IItemResolver> resolvers,
IEnumerable<IIntroProvider> introProviders,
IEnumerable<IBaseItemComparer> itemComparers,
IEnumerable<ILibraryPrescanTask> prescanTasks,
- IEnumerable<ILibraryPostScanTask> postscanTasks,
- IEnumerable<IMetadataSaver> savers)
+ IEnumerable<ILibraryPostScanTask> postscanTasks)
{
EntityResolutionIgnoreRules = rules;
PluginFolderCreators = pluginFolders;
@@ -214,7 +206,6 @@ namespace MediaBrowser.Server.Implementations.Library
Comparers = itemComparers;
PrescanTasks = prescanTasks;
PostscanTasks = postscanTasks;
- Savers = savers;
}
/// <summary>
@@ -589,7 +580,7 @@ namespace MediaBrowser.Server.Implementations.Library
/// <returns>UserRootFolder.</returns>
public UserRootFolder GetUserRootFolder(string userRootPath)
{
- return _userRootFolders.GetOrAdd(userRootPath, key => RetrieveItem(userRootPath.GetMBId(typeof(UserRootFolder)), typeof(UserRootFolder)) as UserRootFolder ??
+ return _userRootFolders.GetOrAdd(userRootPath, key => RetrieveItem(userRootPath.GetMBId(typeof(UserRootFolder)), typeof(UserRootFolder)) as UserRootFolder ??
(UserRootFolder)ResolvePath(new DirectoryInfo(userRootPath)));
}
@@ -649,7 +640,7 @@ namespace MediaBrowser.Server.Implementations.Library
{
return GetItemByName<MusicGenre>(ConfigurationManager.ApplicationPaths.MusicGenrePath, name, CancellationToken.None, allowSlowProviders);
}
-
+
/// <summary>
/// Gets a Genre
/// </summary>
@@ -1001,7 +992,7 @@ namespace MediaBrowser.Server.Implementations.Library
await RunPrescanTasks(progress, cancellationToken).ConfigureAwait(false);
progress.Report(15);
-
+
var innerProgress = new ActionableProgress<double>();
innerProgress.RegisterAction(pct => progress.Report(15 + pct * .65));
@@ -1010,7 +1001,7 @@ namespace MediaBrowser.Server.Implementations.Library
await RootFolder.ValidateChildren(innerProgress, cancellationToken, recursive: true).ConfigureAwait(false);
progress.Report(80);
-
+
// Run post-scan tasks
await RunPostScanTasks(progress, cancellationToken).ConfigureAwait(false);
@@ -1044,7 +1035,7 @@ namespace MediaBrowser.Server.Implementations.Library
progress.Report(2 + percent * .13);
}
});
-
+
try
{
await i.Run(innerProgress, cancellationToken);
@@ -1301,11 +1292,7 @@ namespace MediaBrowser.Server.Implementations.Library
foreach (var item in list)
{
UpdateItemInLibraryCache(item);
- }
-
- foreach (var item in list)
- {
- await OnItemUpdated(item, CancellationToken.None).ConfigureAwait(false);
+ OnItemUpdated(item);
}
}
@@ -1354,25 +1341,9 @@ namespace MediaBrowser.Server.Implementations.Library
/// Called when [item updated].
/// </summary>
/// <param name="item">The item.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
/// <returns>Task.</returns>
- private async Task OnItemUpdated(BaseItem item, CancellationToken cancellationToken)
+ private void OnItemUpdated(BaseItem item)
{
- if (ConfigurationManager.Configuration.SaveLocalMeta && item.LocationType == LocationType.FileSystem)
- {
- foreach (var saver in Savers.Where(i => i.Supports(item)))
- {
- try
- {
- await saver.Save(item, cancellationToken).ConfigureAwait(false);
- }
- catch (Exception ex)
- {
- _logger.ErrorException("Error in metadata saver", ex);
- }
- }
- }
-
if (ItemUpdated != null)
{
try
diff --git a/MediaBrowser.Server.Implementations/Providers/ProviderManager.cs b/MediaBrowser.Server.Implementations/Providers/ProviderManager.cs
index beab6200f..3c1a7aa1e 100644
--- a/MediaBrowser.Server.Implementations/Providers/ProviderManager.cs
+++ b/MediaBrowser.Server.Implementations/Providers/ProviderManager.cs
@@ -3,7 +3,9 @@ using MediaBrowser.Common.Net;
using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.IO;
+using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Providers;
+using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Logging;
using System;
using System.Collections.Concurrent;
@@ -58,6 +60,8 @@ namespace MediaBrowser.Server.Implementations.Providers
/// <value>The metadata providers enumerable.</value>
private BaseMetadataProvider[] MetadataProviders { get; set; }
+ private IEnumerable<IMetadataSaver> _savers;
+
/// <summary>
/// Initializes a new instance of the <see cref="ProviderManager" /> class.
/// </summary>
@@ -65,7 +69,8 @@ namespace MediaBrowser.Server.Implementations.Providers
/// <param name="configurationManager">The configuration manager.</param>
/// <param name="directoryWatchers">The directory watchers.</param>
/// <param name="logManager">The log manager.</param>
- public ProviderManager(IHttpClient httpClient, IServerConfigurationManager configurationManager, IDirectoryWatchers directoryWatchers, ILogManager logManager)
+ /// <param name="libraryManager">The library manager.</param>
+ public ProviderManager(IHttpClient httpClient, IServerConfigurationManager configurationManager, IDirectoryWatchers directoryWatchers, ILogManager logManager, ILibraryManager libraryManager)
{
_logger = logManager.GetLogger("ProviderManager");
_httpClient = httpClient;
@@ -74,6 +79,37 @@ namespace MediaBrowser.Server.Implementations.Providers
_remoteImageCache = new FileSystemRepository(configurationManager.ApplicationPaths.DownloadedImagesDataPath);
configurationManager.ConfigurationUpdated += configurationManager_ConfigurationUpdated;
+
+ libraryManager.ItemUpdated += libraryManager_ItemUpdated;
+ }
+
+ void libraryManager_ItemUpdated(object sender, ItemChangeEventArgs e)
+ {
+ var item = e.Item;
+
+ if (ConfigurationManager.Configuration.SaveLocalMeta && item.LocationType == LocationType.FileSystem)
+ {
+ foreach (var saver in _savers.Where(i => i.Supports(item)))
+ {
+ var path = saver.GetSavePath(item);
+
+ _directoryWatchers.TemporarilyIgnore(path);
+
+ try
+ {
+ saver.Save(item, CancellationToken.None);
+ }
+ catch (Exception ex)
+ {
+ _logger.ErrorException("Error in metadata saver", ex);
+ }
+ finally
+ {
+ _directoryWatchers.RemoveTempIgnore(path);
+ }
+ }
+ }
+
}
/// <summary>
@@ -91,9 +127,12 @@ namespace MediaBrowser.Server.Implementations.Providers
/// Adds the metadata providers.
/// </summary>
/// <param name="providers">The providers.</param>
- public void AddMetadataProviders(IEnumerable<BaseMetadataProvider> providers)
+ /// <param name="savers">The savers.</param>
+ public void AddParts(IEnumerable<BaseMetadataProvider> providers,
+ IEnumerable<IMetadataSaver> savers)
{
MetadataProviders = providers.OrderBy(e => e.Priority).ToArray();
+ _savers = savers;
}
/// <summary>