From e23efc9a84d7fbb02176c0dfd481664f8b0c2416 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Mon, 9 Dec 2013 21:36:24 -0500 Subject: have seasons refresh on series folder changes --- .../Providers/BaseMetadataProvider.cs | 63 +++++++++++----------- 1 file changed, 31 insertions(+), 32 deletions(-) (limited to 'MediaBrowser.Controller/Providers/BaseMetadataProvider.cs') diff --git a/MediaBrowser.Controller/Providers/BaseMetadataProvider.cs b/MediaBrowser.Controller/Providers/BaseMetadataProvider.cs index 40afe0b54..0acb45f93 100644 --- a/MediaBrowser.Controller/Providers/BaseMetadataProvider.cs +++ b/MediaBrowser.Controller/Providers/BaseMetadataProvider.cs @@ -325,6 +325,16 @@ namespace MediaBrowser.Controller.Providers return !item.ResolveArgs.IsDirectory; } + protected virtual IEnumerable GetItemsForFileStampComparison(BaseItem item) + { + if (UseParentFileSystemStamp(item) && item.Parent != null) + { + return new[] { item.Parent }; + } + + return new[] { item }; + } + /// /// Gets the item's current file system stamp /// @@ -332,12 +342,7 @@ namespace MediaBrowser.Controller.Providers /// Guid. private Guid GetCurrentFileSystemStamp(BaseItem item) { - if (UseParentFileSystemStamp(item) && item.Parent != null) - { - return GetFileSystemStamp(item.Parent); - } - - return GetFileSystemStamp(item); + return GetFileSystemStamp(GetItemsForFileStampComparison(item)); } private Dictionary _fileStampExtensionsDictionary; @@ -355,43 +360,37 @@ namespace MediaBrowser.Controller.Providers /// /// Gets the file system stamp. /// - /// The item. + /// The items. /// Guid. - protected virtual Guid GetFileSystemStamp(BaseItem item) + protected virtual Guid GetFileSystemStamp(IEnumerable items) { - // If there's no path or the item is a file, there's nothing to do - if (item.LocationType != LocationType.FileSystem) - { - return Guid.Empty; - } + var sb = new StringBuilder(); - ItemResolveArgs resolveArgs; + var extensions = FileStampExtensionsDictionary; + var numExtensions = FilestampExtensions.Length; - try - { - resolveArgs = item.ResolveArgs; - } - catch (IOException ex) + foreach (var item in items) { - Logger.ErrorException("Error determining if path is directory: {0}", ex, item.Path); - throw; + // If there's no path or the item is a file, there's nothing to do + if (item.LocationType == LocationType.FileSystem) + { + var resolveArgs = item.ResolveArgs; + + if (resolveArgs.IsDirectory) + { + // Record the name of each file + // Need to sort these because accoring to msdn docs, our i/o methods are not guaranteed in any order + AddFiles(sb, resolveArgs.FileSystemChildren, extensions, numExtensions); + AddFiles(sb, resolveArgs.MetadataFiles, extensions, numExtensions); + } + } } - if (!resolveArgs.IsDirectory) + if (sb.Length == 0) { return Guid.Empty; } - var sb = new StringBuilder(); - - var extensions = FileStampExtensionsDictionary; - var numExtensions = FilestampExtensions.Length; - - // Record the name of each file - // Need to sort these because accoring to msdn docs, our i/o methods are not guaranteed in any order - AddFiles(sb, resolveArgs.FileSystemChildren, extensions, numExtensions); - AddFiles(sb, resolveArgs.MetadataFiles, extensions, numExtensions); - return sb.ToString().GetMD5(); } -- cgit v1.2.3