using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Resolvers; using MediaBrowser.Model.Entities; using System; using MediaBrowser.Controller.Entities; namespace Emby.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 MediaBrowser.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 MediaBrowser.Controller.Entities.Audio.Audio(); } if (string.Equals(collectionType, CollectionType.Books, StringComparison.OrdinalIgnoreCase)) { return new AudioBook(); } } } return null; } } }