|
|
|
|
using MediaBrowser.Model.Extensions;
|
|
|
|
|
using System;
|
|
|
|
|
|
|
|
|
|
namespace MediaBrowser.Model.Dlna
|
|
|
|
|
{
|
|
|
|
|
public class SearchCriteria
|
|
|
|
|
{
|
|
|
|
|
public SearchType SearchType { get; set; }
|
|
|
|
|
|
|
|
|
|
public SearchCriteria(string search)
|
|
|
|
|
{
|
|
|
|
|
if (string.IsNullOrEmpty(search))
|
|
|
|
|
{
|
|
|
|
|
throw new ArgumentNullException("search");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
SearchType = SearchType.Unknown;
|
|
|
|
|
|
|
|
|
|
String[] factors = StringHelper.RegexSplit(search, "(and|or)");
|
|
|
|
|
foreach (String factor in factors)
|
|
|
|
|
{
|
|
|
|
|
String[] subFactors = StringHelper.RegexSplit(factor.Trim().Trim('(').Trim(')').Trim(), "\\s", 3);
|
|
|
|
|
|
|
|
|
|
if (subFactors.Length == 3)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
if (StringHelper.EqualsIgnoreCase("upnp:class", subFactors[0]) &&
|
|
|
|
|
(StringHelper.EqualsIgnoreCase("=", subFactors[1]) || StringHelper.EqualsIgnoreCase("derivedfrom", subFactors[1])))
|
|
|
|
|
{
|
|
|
|
|
if (StringHelper.EqualsIgnoreCase("\"object.item.imageItem\"", subFactors[2]) || StringHelper.EqualsIgnoreCase("\"object.item.imageItem.photo\"", subFactors[2]))
|
|
|
|
|
{
|
|
|
|
|
SearchType = SearchType.Image;
|
|
|
|
|
}
|
|
|
|
|
else if (StringHelper.EqualsIgnoreCase("\"object.item.videoItem\"", subFactors[2]))
|
|
|
|
|
{
|
|
|
|
|
SearchType = SearchType.Video;
|
|
|
|
|
}
|
|
|
|
|
else if (StringHelper.EqualsIgnoreCase("\"object.container.playlistContainer\"", subFactors[2]))
|
|
|
|
|
{
|
|
|
|
|
SearchType = SearchType.Playlist;
|
|
|
|
|
}
|
|
|
|
|
else if (StringHelper.EqualsIgnoreCase("\"object.container.album.musicAlbum\"", subFactors[2]))
|
|
|
|
|
{
|
|
|
|
|
SearchType = SearchType.MusicAlbum;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|