diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-12-09 21:36:24 -0500 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-12-09 21:36:24 -0500 |
| commit | e23efc9a84d7fbb02176c0dfd481664f8b0c2416 (patch) | |
| tree | caa176683971b4edcd01f01fddbae40d8a43a736 /MediaBrowser.Controller/Providers/BaseMetadataProvider.cs | |
| parent | de005051f8e6840bb8f4478a0da0c97d0779a0a4 (diff) | |
have seasons refresh on series folder changes
Diffstat (limited to 'MediaBrowser.Controller/Providers/BaseMetadataProvider.cs')
| -rw-r--r-- | MediaBrowser.Controller/Providers/BaseMetadataProvider.cs | 63 |
1 files changed, 31 insertions, 32 deletions
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<BaseItem> GetItemsForFileStampComparison(BaseItem item) + { + if (UseParentFileSystemStamp(item) && item.Parent != null) + { + return new[] { item.Parent }; + } + + return new[] { item }; + } + /// <summary> /// Gets the item's current file system stamp /// </summary> @@ -332,12 +342,7 @@ namespace MediaBrowser.Controller.Providers /// <returns>Guid.</returns> private Guid GetCurrentFileSystemStamp(BaseItem item) { - if (UseParentFileSystemStamp(item) && item.Parent != null) - { - return GetFileSystemStamp(item.Parent); - } - - return GetFileSystemStamp(item); + return GetFileSystemStamp(GetItemsForFileStampComparison(item)); } private Dictionary<string, string> _fileStampExtensionsDictionary; @@ -355,43 +360,37 @@ namespace MediaBrowser.Controller.Providers /// <summary> /// Gets the file system stamp. /// </summary> - /// <param name="item">The item.</param> + /// <param name="items">The items.</param> /// <returns>Guid.</returns> - protected virtual Guid GetFileSystemStamp(BaseItem item) + protected virtual Guid GetFileSystemStamp(IEnumerable<BaseItem> 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(); } |
