using System; using System.IO; using System.Linq; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Playlists; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Extensions; namespace Emby.Server.Implementations.Library.Resolvers { public class PlaylistResolver : FolderResolver { private string[] SupportedCollectionTypes = new string[] { string.Empty, CollectionType.Music }; /// /// Resolves the specified args. /// /// The args. /// BoxSet. protected override Playlist Resolve(ItemResolveArgs args) { // It's a boxset if all of the following conditions are met: // Is a Directory // Contains [playlist] in the path if (args.IsDirectory) { var filename = Path.GetFileName(args.Path); if (string.IsNullOrEmpty(filename)) { return null; } if (filename.IndexOf("[playlist]", StringComparison.OrdinalIgnoreCase) != -1) { return new Playlist { Path = args.Path, Name = Path.GetFileName(args.Path).Replace("[playlist]", string.Empty, StringComparison.OrdinalIgnoreCase).Trim() }; } } else { if (SupportedCollectionTypes.Contains(args.CollectionType ?? string.Empty, StringComparer.OrdinalIgnoreCase)) { var extension = Path.GetExtension(args.Path); if (Playlist.SupportedExtensions.Contains(extension ?? string.Empty, StringComparer.OrdinalIgnoreCase)) { return new Playlist { Path = args.Path, Name = Path.GetFileNameWithoutExtension(args.Path), IsInMixedFolder = true }; } } } return null; } } }