using MediaBrowser.Controller.IO; using MediaBrowser.Controller.Library; using System; using System.IO; using System.Linq; using MediaBrowser.Controller.Resolvers; namespace MediaBrowser.Server.Implementations.Library.Resolvers.Audio { /// /// Class AudioResolver /// public class AudioResolver : ItemResolver { /// /// 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) { if (IsAudioFile(args)) { return new Controller.Entities.Audio.Audio(); } } return null; } /// /// The audio file extensions /// public static readonly string[] AudioFileExtensions = new[] { ".mp3", ".flac", ".wma", ".aac", ".acc", ".m4a", ".m4b", ".wav", ".ape", ".ogg", ".oga" }; /// /// Determines whether [is audio file] [the specified args]. /// /// The args. /// true if [is audio file] [the specified args]; otherwise, false. public static bool IsAudioFile(ItemResolveArgs args) { return AudioFileExtensions.Contains(Path.GetExtension(args.Path), StringComparer.OrdinalIgnoreCase); } /// /// Determines whether [is audio file] [the specified file]. /// /// The file. /// true if [is audio file] [the specified file]; otherwise, false. public static bool IsAudioFile(WIN32_FIND_DATA file) { return AudioFileExtensions.Contains(Path.GetExtension(file.Path), StringComparer.OrdinalIgnoreCase); } } }