diff options
Diffstat (limited to 'MediaBrowser.Controller/Providers')
6 files changed, 18 insertions, 225 deletions
diff --git a/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs b/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs index 7bd6d824aa..5d3d9dbcab 100644 --- a/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs +++ b/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs @@ -20,7 +20,7 @@ namespace MediaBrowser.Controller.Providers /// </summary> /// <typeparam name="T"></typeparam> public class BaseItemXmlParser<T> - where T : BaseItem, new() + where T : BaseItem { /// <summary> /// The logger @@ -422,11 +422,7 @@ namespace MediaBrowser.Controller.Providers int runtime; if (int.TryParse(text.Split(' ')[0], NumberStyles.Integer, _usCulture, out runtime)) { - // For audio and video don't replace ffmpeg data - if (!(item is Video || item is Audio)) - { - item.RunTimeTicks = TimeSpan.FromMinutes(runtime).Ticks; - } + item.RunTimeTicks = TimeSpan.FromMinutes(runtime).Ticks; } } break; diff --git a/MediaBrowser.Controller/Providers/BaseMetadataProvider.cs b/MediaBrowser.Controller/Providers/BaseMetadataProvider.cs index 3b499b487a..6818fa52bc 100644 --- a/MediaBrowser.Controller/Providers/BaseMetadataProvider.cs +++ b/MediaBrowser.Controller/Providers/BaseMetadataProvider.cs @@ -2,13 +2,8 @@ using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; -using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; using System.Threading; using System.Threading.Tasks; @@ -146,19 +141,6 @@ namespace MediaBrowser.Controller.Providers providerInfo.LastRefreshed = value; providerInfo.LastRefreshStatus = status; providerInfo.ProviderVersion = providerVersion; - - // Save the file system stamp for future comparisons - if (RefreshOnFileSystemStampChange && item.LocationType == LocationType.FileSystem) - { - try - { - providerInfo.FileStamp = GetCurrentFileSystemStamp(item); - } - catch (IOException ex) - { - Logger.ErrorException("Error getting file stamp for {0}", ex, item.Path); - } - } } /// <summary> @@ -233,12 +215,6 @@ namespace MediaBrowser.Controller.Providers return true; } - if (RefreshOnFileSystemStampChange && item.LocationType == LocationType.FileSystem && - HasFileSystemStampChanged(item, providerInfo)) - { - return true; - } - if (RefreshOnVersionChange && !String.Equals(ProviderVersion, providerInfo.ProviderVersion)) { return true; @@ -264,17 +240,6 @@ namespace MediaBrowser.Controller.Providers } /// <summary> - /// Determines if the item's file system stamp has changed from the last time the provider refreshed - /// </summary> - /// <param name="item">The item.</param> - /// <param name="providerInfo">The provider info.</param> - /// <returns><c>true</c> if [has file system stamp changed] [the specified item]; otherwise, <c>false</c>.</returns> - protected bool HasFileSystemStampChanged(BaseItem item, BaseProviderInfo providerInfo) - { - return GetCurrentFileSystemStamp(item) != providerInfo.FileStamp; - } - - /// <summary> /// Override this to return the date that should be compared to the last refresh date /// to determine if this provider should be re-fetched. /// </summary> @@ -301,159 +266,5 @@ namespace MediaBrowser.Controller.Providers /// </summary> /// <value>The priority.</value> public abstract MetadataProviderPriority Priority { get; } - - /// <summary> - /// Returns true or false indicating if the provider should refresh when the contents of it's directory changes - /// </summary> - /// <value><c>true</c> if [refresh on file system stamp change]; otherwise, <c>false</c>.</value> - protected virtual bool RefreshOnFileSystemStampChange - { - get - { - return false; - } - } - - protected virtual string[] FilestampExtensions - { - get { return new string[] { }; } - } - - /// <summary> - /// Determines if the parent's file system stamp should be used for comparison - /// </summary> - /// <param name="item">The item.</param> - /// <returns><c>true</c> if XXXX, <c>false</c> otherwise</returns> - protected virtual bool UseParentFileSystemStamp(BaseItem item) - { - // True when the current item is just a file - 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> - /// <param name="item">The item.</param> - /// <returns>Guid.</returns> - private Guid GetCurrentFileSystemStamp(BaseItem item) - { - return GetFileSystemStamp(GetItemsForFileStampComparison(item)); - } - - private Dictionary<string, string> _fileStampExtensionsDictionary; - - private Dictionary<string, string> FileStampExtensionsDictionary - { - get - { - return _fileStampExtensionsDictionary ?? - (_fileStampExtensionsDictionary = - FilestampExtensions.ToDictionary(i => i, StringComparer.OrdinalIgnoreCase)); - } - } - - /// <summary> - /// Gets the file system stamp. - /// </summary> - /// <param name="items">The items.</param> - /// <returns>Guid.</returns> - protected virtual Guid GetFileSystemStamp(IEnumerable<BaseItem> items) - { - var sb = new StringBuilder(); - - var extensions = FileStampExtensionsDictionary; - var numExtensions = FilestampExtensions.Length; - - foreach (var item in items) - { - // 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); - } - } - } - - var stamp = sb.ToString(); - - if (string.IsNullOrEmpty(stamp)) - { - return Guid.Empty; - } - - return stamp.GetMD5(); - } - - private static readonly Dictionary<string, string> FoldersToMonitor = new[] { "extrafanart", "extrathumbs" } - .ToDictionary(i => i, StringComparer.OrdinalIgnoreCase); - - protected Guid GetFileSystemStamp(IEnumerable<FileSystemInfo> files) - { - 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, files, extensions, numExtensions); - - return sb.ToString().GetMD5(); - } - - /// <summary> - /// Adds the files. - /// </summary> - /// <param name="sb">The sb.</param> - /// <param name="files">The files.</param> - /// <param name="extensions">The extensions.</param> - /// <param name="numExtensions">The num extensions.</param> - private void AddFiles(StringBuilder sb, IEnumerable<FileSystemInfo> files, Dictionary<string, string> extensions, int numExtensions) - { - foreach (var file in files - .OrderBy(f => f.Name)) - { - try - { - if ((file.Attributes & FileAttributes.Directory) == FileAttributes.Directory) - { - if (FoldersToMonitor.ContainsKey(file.Name)) - { - sb.Append(file.Name); - - var children = ((DirectoryInfo)file).EnumerateFiles("*", SearchOption.TopDirectoryOnly).ToList(); - AddFiles(sb, children, extensions, numExtensions); - } - } - - // It's a file - else if (numExtensions == 0 || extensions.ContainsKey(file.Extension)) - { - sb.Append(file.Name); - } - } - catch (IOException ex) - { - Logger.ErrorException("Error accessing file attributes for {0}", ex, file.FullName); - } - } - } } } diff --git a/MediaBrowser.Controller/Providers/IHasMetadata.cs b/MediaBrowser.Controller/Providers/IHasMetadata.cs index 3fba73a28b..19ab00e687 100644 --- a/MediaBrowser.Controller/Providers/IHasMetadata.cs +++ b/MediaBrowser.Controller/Providers/IHasMetadata.cs @@ -39,5 +39,11 @@ namespace MediaBrowser.Controller.Providers /// </summary> /// <returns><c>true</c> if [is save local metadata enabled]; otherwise, <c>false</c>.</returns> bool IsSaveLocalMetadataEnabled(); + + /// <summary> + /// Gets a value indicating whether this instance is in mixed folder. + /// </summary> + /// <value><c>true</c> if this instance is in mixed folder; otherwise, <c>false</c>.</value> + bool IsInMixedFolder { get; } } } diff --git a/MediaBrowser.Controller/Providers/ILocalMetadataProvider.cs b/MediaBrowser.Controller/Providers/ILocalMetadataProvider.cs index 62b208b59b..91ef22b2c5 100644 --- a/MediaBrowser.Controller/Providers/ILocalMetadataProvider.cs +++ b/MediaBrowser.Controller/Providers/ILocalMetadataProvider.cs @@ -5,12 +5,6 @@ namespace MediaBrowser.Controller.Providers { public interface ILocalMetadataProvider : IMetadataProvider { - /// <summary> - /// Determines whether [has local metadata] [the specified item]. - /// </summary> - /// <param name="item">The item.</param> - /// <returns><c>true</c> if [has local metadata] [the specified item]; otherwise, <c>false</c>.</returns> - bool HasLocalMetadata(IHasMetadata item); } public interface ILocalMetadataProvider<TItemType> : IMetadataProvider<TItemType>, ILocalMetadataProvider @@ -19,9 +13,16 @@ namespace MediaBrowser.Controller.Providers /// <summary> /// Gets the metadata. /// </summary> - /// <param name="path">The path.</param> + /// <param name="info">The information.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task{MetadataResult{`0}}.</returns> - Task<MetadataResult<TItemType>> GetMetadata(string path, CancellationToken cancellationToken); + Task<MetadataResult<TItemType>> GetMetadata(ItemInfo info, CancellationToken cancellationToken); + } + + public class ItemInfo + { + public string Path { get; set; } + + public bool IsInMixedFolder { get; set; } } } diff --git a/MediaBrowser.Controller/Providers/IProviderManager.cs b/MediaBrowser.Controller/Providers/IProviderManager.cs index 7019623ee7..369b582566 100644 --- a/MediaBrowser.Controller/Providers/IProviderManager.cs +++ b/MediaBrowser.Controller/Providers/IProviderManager.cs @@ -25,15 +25,6 @@ namespace MediaBrowser.Controller.Providers Task RefreshMetadata(IHasMetadata item, MetadataRefreshOptions options, CancellationToken cancellationToken); /// <summary> - /// Executes the metadata providers. - /// </summary> - /// <param name="item">The item.</param> - /// <param name="cancellationToken">The cancellation token.</param> - /// <param name="force">if set to <c>true</c> [force].</param> - /// <returns>Task{System.Boolean}.</returns> - Task<ItemUpdateType?> ExecuteMetadataProviders(BaseItem item, CancellationToken cancellationToken, bool force = false); - - /// <summary> /// Saves the image. /// </summary> /// <param name="item">The item.</param> @@ -60,12 +51,11 @@ namespace MediaBrowser.Controller.Providers /// <summary> /// Adds the metadata providers. /// </summary> - /// <param name="providers">The providers.</param> /// <param name="imageProviders">The image providers.</param> /// <param name="metadataServices">The metadata services.</param> /// <param name="metadataProviders">The metadata providers.</param> /// <param name="savers">The savers.</param> - void AddParts(IEnumerable<BaseMetadataProvider> providers, IEnumerable<IImageProvider> imageProviders, IEnumerable<IMetadataService> metadataServices, IEnumerable<IMetadataProvider> metadataProviders, + void AddParts(IEnumerable<IImageProvider> imageProviders, IEnumerable<IMetadataService> metadataServices, IEnumerable<IMetadataProvider> metadataProviders, IEnumerable<IMetadataSaver> savers); /// <summary> diff --git a/MediaBrowser.Controller/Providers/MetadataRefreshOptions.cs b/MediaBrowser.Controller/Providers/MetadataRefreshOptions.cs index 27de50ef8c..83f1a12d91 100644 --- a/MediaBrowser.Controller/Providers/MetadataRefreshOptions.cs +++ b/MediaBrowser.Controller/Providers/MetadataRefreshOptions.cs @@ -16,17 +16,6 @@ namespace MediaBrowser.Controller.Providers /// </summary> [Obsolete] public bool ForceSave { get; set; } - - /// <summary> - /// TODO: deprecate. Keeping this for now, for api compatibility - /// </summary> - [Obsolete] - public bool ResetResolveArgs { get; set; } - - public MetadataRefreshOptions() - { - ResetResolveArgs = true; - } } public class ImageRefreshOptions |
