added movie, series, folder and episode xml saving support

This commit is contained in:
Luke Pulverenti
2013-06-23 13:48:30 -04:00
parent cc2cfabda8
commit d6cf7b51ac
19 changed files with 740 additions and 246 deletions

View File

@@ -73,12 +73,6 @@ namespace MediaBrowser.Server.Implementations.Library
/// <value>The comparers.</value>
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>
@@ -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