2014-08-02 19:16:37 -07:00
|
|
|
|
using MediaBrowser.Controller.Library;
|
|
|
|
|
using MediaBrowser.Controller.Playlists;
|
|
|
|
|
using System;
|
|
|
|
|
using System.IO;
|
2018-09-12 10:26:21 -07:00
|
|
|
|
using MediaBrowser.Model.Extensions;
|
|
|
|
|
using MediaBrowser.Model.Entities;
|
|
|
|
|
using System.Linq;
|
2014-08-02 19:16:37 -07:00
|
|
|
|
|
2016-11-02 23:37:52 -07:00
|
|
|
|
namespace Emby.Server.Implementations.Library.Resolvers
|
2014-08-02 19:16:37 -07:00
|
|
|
|
{
|
|
|
|
|
public class PlaylistResolver : FolderResolver<Playlist>
|
|
|
|
|
{
|
2018-09-12 10:26:21 -07:00
|
|
|
|
private string[] SupportedCollectionTypes = new string[] {
|
|
|
|
|
|
|
|
|
|
string.Empty,
|
|
|
|
|
CollectionType.Music
|
|
|
|
|
};
|
|
|
|
|
|
2014-08-02 19:16:37 -07:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// Resolves the specified args.
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="args">The args.</param>
|
|
|
|
|
/// <returns>BoxSet.</returns>
|
|
|
|
|
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)
|
|
|
|
|
{
|
2014-11-29 12:51:30 -07:00
|
|
|
|
return new Playlist
|
|
|
|
|
{
|
|
|
|
|
Path = args.Path,
|
2018-09-12 10:26:21 -07:00
|
|
|
|
Name = Path.GetFileName(args.Path).Replace("[playlist]", string.Empty, StringComparison.OrdinalIgnoreCase).Trim()
|
2014-11-29 12:51:30 -07:00
|
|
|
|
};
|
2014-08-02 19:16:37 -07:00
|
|
|
|
}
|
|
|
|
|
}
|
2018-09-12 10:26:21 -07:00
|
|
|
|
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
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2014-08-02 19:16:37 -07:00
|
|
|
|
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|