From 3eb4091808735858b01855d298226d239be464af Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Thu, 3 Nov 2016 02:37:52 -0400 Subject: move additional classes to new server lib --- .../Library/Resolvers/Audio/AudioResolver.cs | 68 -------- .../Library/Resolvers/Audio/MusicAlbumResolver.cs | 173 --------------------- .../Library/Resolvers/Audio/MusicArtistResolver.cs | 94 ----------- 3 files changed, 335 deletions(-) delete mode 100644 MediaBrowser.Server.Implementations/Library/Resolvers/Audio/AudioResolver.cs delete mode 100644 MediaBrowser.Server.Implementations/Library/Resolvers/Audio/MusicAlbumResolver.cs delete mode 100644 MediaBrowser.Server.Implementations/Library/Resolvers/Audio/MusicArtistResolver.cs (limited to 'MediaBrowser.Server.Implementations/Library/Resolvers/Audio') diff --git a/MediaBrowser.Server.Implementations/Library/Resolvers/Audio/AudioResolver.cs b/MediaBrowser.Server.Implementations/Library/Resolvers/Audio/AudioResolver.cs deleted file mode 100644 index 039a17100..000000000 --- a/MediaBrowser.Server.Implementations/Library/Resolvers/Audio/AudioResolver.cs +++ /dev/null @@ -1,68 +0,0 @@ -using MediaBrowser.Controller.Library; -using MediaBrowser.Controller.Resolvers; -using MediaBrowser.Model.Entities; -using System; - -namespace MediaBrowser.Server.Implementations.Library.Resolvers.Audio -{ - /// - /// Class AudioResolver - /// - public class AudioResolver : ItemResolver - { - private readonly ILibraryManager _libraryManager; - - public AudioResolver(ILibraryManager libraryManager) - { - _libraryManager = libraryManager; - } - - /// - /// Gets the priority. - /// - /// The priority. - public override ResolverPriority Priority - { - get { return ResolverPriority.Last; } - } - - /// - /// Resolves the specified args. - /// - /// The args. - /// Entities.Audio.Audio. - protected override Controller.Entities.Audio.Audio Resolve(ItemResolveArgs args) - { - // Return audio if the path is a file and has a matching extension - - if (!args.IsDirectory) - { - var libraryOptions = args.GetLibraryOptions(); - - if (_libraryManager.IsAudioFile(args.Path, libraryOptions)) - { - var collectionType = args.GetCollectionType(); - - var isMixed = string.IsNullOrWhiteSpace(collectionType); - - // For conflicting extensions, give priority to videos - if (isMixed && _libraryManager.IsVideoFile(args.Path, libraryOptions)) - { - return null; - } - - var isStandalone = args.Parent == null; - - if (isStandalone || - string.Equals(collectionType, CollectionType.Music, StringComparison.OrdinalIgnoreCase) || - isMixed) - { - return new Controller.Entities.Audio.Audio(); - } - } - } - - return null; - } - } -} diff --git a/MediaBrowser.Server.Implementations/Library/Resolvers/Audio/MusicAlbumResolver.cs b/MediaBrowser.Server.Implementations/Library/Resolvers/Audio/MusicAlbumResolver.cs deleted file mode 100644 index c1ac7d68c..000000000 --- a/MediaBrowser.Server.Implementations/Library/Resolvers/Audio/MusicAlbumResolver.cs +++ /dev/null @@ -1,173 +0,0 @@ -using MediaBrowser.Controller.Entities.Audio; -using MediaBrowser.Controller.Library; -using MediaBrowser.Controller.Providers; -using MediaBrowser.Controller.Resolvers; -using MediaBrowser.Model.Entities; -using MediaBrowser.Model.Logging; -using MediaBrowser.Naming.Audio; -using MediaBrowser.Server.Implementations.Logging; -using System; -using System.Collections.Generic; -using System.IO; -using MediaBrowser.Common.IO; -using MediaBrowser.Model.IO; -using MediaBrowser.Controller.Configuration; -using MediaBrowser.Controller.IO; -using MediaBrowser.Model.Configuration; - -namespace MediaBrowser.Server.Implementations.Library.Resolvers.Audio -{ - /// - /// Class MusicAlbumResolver - /// - public class MusicAlbumResolver : ItemResolver - { - private readonly ILogger _logger; - private readonly IFileSystem _fileSystem; - private readonly ILibraryManager _libraryManager; - - public MusicAlbumResolver(ILogger logger, IFileSystem fileSystem, ILibraryManager libraryManager) - { - _logger = logger; - _fileSystem = fileSystem; - _libraryManager = libraryManager; - } - - /// - /// Gets the priority. - /// - /// The priority. - public override ResolverPriority Priority - { - get - { - // Behind special folder resolver - return ResolverPriority.Second; - } - } - - /// - /// Resolves the specified args. - /// - /// The args. - /// MusicAlbum. - protected override MusicAlbum Resolve(ItemResolveArgs args) - { - if (!args.IsDirectory) return null; - - // Avoid mis-identifying top folders - if (args.HasParent()) return null; - if (args.Parent.IsRoot) return null; - - var collectionType = args.GetCollectionType(); - - var isMusicMediaFolder = string.Equals(collectionType, CollectionType.Music, StringComparison.OrdinalIgnoreCase); - - // If there's a collection type and it's not music, don't allow it. - if (!isMusicMediaFolder) - { - return null; - } - - return IsMusicAlbum(args) ? new MusicAlbum() : null; - } - - - /// - /// Determine if the supplied file data points to a music album - /// - public bool IsMusicAlbum(string path, IDirectoryService directoryService, LibraryOptions libraryOptions) - { - return ContainsMusic(directoryService.GetFileSystemEntries(path), true, directoryService, _logger, _fileSystem, libraryOptions, _libraryManager); - } - - /// - /// Determine if the supplied resolve args should be considered a music album - /// - /// The args. - /// true if [is music album] [the specified args]; otherwise, false. - private bool IsMusicAlbum(ItemResolveArgs args) - { - // Args points to an album if parent is an Artist folder or it directly contains music - if (args.IsDirectory) - { - //if (args.Parent is MusicArtist) return true; //saves us from testing children twice - if (ContainsMusic(args.FileSystemChildren, true, args.DirectoryService, _logger, _fileSystem, args.GetLibraryOptions(), _libraryManager)) return true; - } - - return false; - } - - /// - /// Determine if the supplied list contains what we should consider music - /// - private bool ContainsMusic(IEnumerable list, - bool allowSubfolders, - IDirectoryService directoryService, - ILogger logger, - IFileSystem fileSystem, - LibraryOptions libraryOptions, - ILibraryManager libraryManager) - { - var discSubfolderCount = 0; - var notMultiDisc = false; - - foreach (var fileSystemInfo in list) - { - if (fileSystemInfo.IsDirectory) - { - if (allowSubfolders) - { - var path = fileSystemInfo.FullName; - var isMultiDisc = IsMultiDiscFolder(path, libraryOptions); - - if (isMultiDisc) - { - var hasMusic = ContainsMusic(directoryService.GetFileSystemEntries(path), false, directoryService, logger, fileSystem, libraryOptions, libraryManager); - - if (hasMusic) - { - logger.Debug("Found multi-disc folder: " + path); - discSubfolderCount++; - } - } - else - { - var hasMusic = ContainsMusic(directoryService.GetFileSystemEntries(path), false, directoryService, logger, fileSystem, libraryOptions, libraryManager); - - if (hasMusic) - { - // If there are folders underneath with music that are not multidisc, then this can't be a multi-disc album - notMultiDisc = true; - } - } - } - } - - var fullName = fileSystemInfo.FullName; - - if (libraryManager.IsAudioFile(fullName, libraryOptions)) - { - return true; - } - } - - if (notMultiDisc) - { - return false; - } - - return discSubfolderCount > 0; - } - - private bool IsMultiDiscFolder(string path, LibraryOptions libraryOptions) - { - var namingOptions = ((LibraryManager)_libraryManager).GetNamingOptions(libraryOptions); - - var parser = new AlbumParser(namingOptions, new PatternsLogger()); - var result = parser.ParseMultiPart(path); - - return result.IsMultiPart; - } - } -} diff --git a/MediaBrowser.Server.Implementations/Library/Resolvers/Audio/MusicArtistResolver.cs b/MediaBrowser.Server.Implementations/Library/Resolvers/Audio/MusicArtistResolver.cs deleted file mode 100644 index be651b9c8..000000000 --- a/MediaBrowser.Server.Implementations/Library/Resolvers/Audio/MusicArtistResolver.cs +++ /dev/null @@ -1,94 +0,0 @@ -using MediaBrowser.Controller.Entities.Audio; -using MediaBrowser.Controller.Library; -using MediaBrowser.Controller.Resolvers; -using MediaBrowser.Model.Entities; -using MediaBrowser.Model.Logging; -using System; -using System.IO; -using System.Linq; -using MediaBrowser.Common.IO; -using MediaBrowser.Model.IO; -using MediaBrowser.Controller.Configuration; -using MediaBrowser.Controller.IO; - -namespace MediaBrowser.Server.Implementations.Library.Resolvers.Audio -{ - /// - /// Class MusicArtistResolver - /// - public class MusicArtistResolver : ItemResolver - { - private readonly ILogger _logger; - private readonly IFileSystem _fileSystem; - private readonly ILibraryManager _libraryManager; - private readonly IServerConfigurationManager _config; - - public MusicArtistResolver(ILogger logger, IFileSystem fileSystem, ILibraryManager libraryManager, IServerConfigurationManager config) - { - _logger = logger; - _fileSystem = fileSystem; - _libraryManager = libraryManager; - _config = config; - } - - /// - /// Gets the priority. - /// - /// The priority. - public override ResolverPriority Priority - { - get - { - // Behind special folder resolver - return ResolverPriority.Second; - } - } - - /// - /// Resolves the specified args. - /// - /// The args. - /// MusicArtist. - protected override MusicArtist Resolve(ItemResolveArgs args) - { - if (!args.IsDirectory) return null; - - // Don't allow nested artists - if (args.HasParent() || args.HasParent()) - { - return null; - } - - var collectionType = args.GetCollectionType(); - - var isMusicMediaFolder = string.Equals(collectionType, CollectionType.Music, StringComparison.OrdinalIgnoreCase); - - // If there's a collection type and it's not music, it can't be a series - if (!isMusicMediaFolder) - { - return null; - } - - if (args.ContainsFileSystemEntryByName("artist.nfo")) - { - return new MusicArtist(); - } - - if (_config.Configuration.EnableSimpleArtistDetection) - { - return null; - } - - // Avoid mis-identifying top folders - if (args.Parent.IsRoot) return null; - - var directoryService = args.DirectoryService; - - var albumResolver = new MusicAlbumResolver(_logger, _fileSystem, _libraryManager); - - // If we contain an album assume we are an artist folder - return args.FileSystemChildren.Where(i => i.IsDirectory).Any(i => albumResolver.IsMusicAlbum(i.FullName, directoryService, args.GetLibraryOptions())) ? new MusicArtist() : null; - } - - } -} -- cgit v1.2.3