mirror of
https://github.com/ZetaKebab/MpcNET.git
synced 2025-01-14 22:18:43 +00:00
MPD Tags added.
This commit is contained in:
parent
e1430d193f
commit
74061bdab4
@ -13,16 +13,16 @@ namespace LibMpc
|
|||||||
|
|
||||||
public class Find : IMpcCommand
|
public class Find : IMpcCommand
|
||||||
{
|
{
|
||||||
private readonly SearchTag _searchTag;
|
private readonly ITag _tag;
|
||||||
private readonly string _searchText;
|
private readonly string _searchText;
|
||||||
|
|
||||||
public Find(SearchTag searchTag, string searchText)
|
public Find(ITag tag, string searchText)
|
||||||
{
|
{
|
||||||
_searchTag = searchTag;
|
_tag = tag;
|
||||||
_searchText = searchText;
|
_searchText = searchText;
|
||||||
}
|
}
|
||||||
|
|
||||||
public string Value => string.Join(" ", "find", _searchTag.Value, _searchText);
|
public string Value => string.Join(" ", "find", _tag.Value, _searchText);
|
||||||
|
|
||||||
public object ParseResponse(object response)
|
public object ParseResponse(object response)
|
||||||
{
|
{
|
||||||
@ -32,14 +32,14 @@ namespace LibMpc
|
|||||||
|
|
||||||
public class List : IMpcCommand
|
public class List : IMpcCommand
|
||||||
{
|
{
|
||||||
private readonly SearchTag _searchTag;
|
private readonly ITag _tag;
|
||||||
|
|
||||||
public List(SearchTag searchTag)
|
public List(ITag tag)
|
||||||
{
|
{
|
||||||
_searchTag = searchTag;
|
_tag = tag;
|
||||||
}
|
}
|
||||||
|
|
||||||
public string Value => string.Join(" ", "list", _searchTag);
|
public string Value => string.Join(" ", "list", _tag);
|
||||||
|
|
||||||
public object ParseResponse(object response)
|
public object ParseResponse(object response)
|
||||||
{
|
{
|
||||||
|
@ -1,62 +0,0 @@
|
|||||||
namespace LibMpc
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// The scope specifier for search commands.
|
|
||||||
/// </summary>
|
|
||||||
public enum ScopeSpecifier
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Any attribute of a file.
|
|
||||||
/// </summary>
|
|
||||||
Any,
|
|
||||||
/// <summary>
|
|
||||||
/// The path and name of the file.
|
|
||||||
/// </summary>
|
|
||||||
Filename,
|
|
||||||
/// <summary>
|
|
||||||
/// The artist of the track.
|
|
||||||
/// </summary>
|
|
||||||
Artist,
|
|
||||||
/// <summary>
|
|
||||||
/// The album the track appears on.
|
|
||||||
/// </summary>
|
|
||||||
Album,
|
|
||||||
/// <summary>
|
|
||||||
/// The title of the track.
|
|
||||||
/// </summary>
|
|
||||||
Title,
|
|
||||||
/// <summary>
|
|
||||||
/// The index of the track on its album.
|
|
||||||
/// </summary>
|
|
||||||
Track,
|
|
||||||
/// <summary>
|
|
||||||
/// The name of the track.
|
|
||||||
/// </summary>
|
|
||||||
Name,
|
|
||||||
/// <summary>
|
|
||||||
/// The genre of the song.
|
|
||||||
/// </summary>
|
|
||||||
Genre,
|
|
||||||
/// <summary>
|
|
||||||
/// The date the track was released.
|
|
||||||
/// </summary>
|
|
||||||
Date,
|
|
||||||
/// <summary>
|
|
||||||
/// The composer of the song.
|
|
||||||
/// </summary>
|
|
||||||
Composer,
|
|
||||||
/// <summary>
|
|
||||||
/// The performer of the song.
|
|
||||||
/// </summary>
|
|
||||||
Performer,
|
|
||||||
/// <summary>
|
|
||||||
/// A comment for the track.
|
|
||||||
/// </summary>
|
|
||||||
Comment,
|
|
||||||
/// <summary>
|
|
||||||
/// The disc of a multidisc album the track is on.
|
|
||||||
/// </summary>
|
|
||||||
Disc
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -156,15 +156,15 @@ namespace LibMpc
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns all files in the database who's attribute matches the given token. Works like the Search command but is case sensitive.
|
/// Returns all files in the database who's attribute matches the given token. Works like the Search command but is case sensitive.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="scopeSpecifier">Specifies the attribute to search for.</param>
|
/// <param name="tag">Specifies the attribute to search for.</param>
|
||||||
/// <param name="token">The value the files attribute must have to be included in the result.</param>
|
/// <param name="token">The value the files attribute must have to be included in the result.</param>
|
||||||
/// <returns>All files in the database who's attribute matches the given token.</returns>
|
/// <returns>All files in the database who's attribute matches the given token.</returns>
|
||||||
public async Task<List<MpdFile>> FindAsync(ScopeSpecifier scopeSpecifier, string token)
|
public async Task<List<MpdFile>> FindAsync(ITag tag, string token)
|
||||||
{
|
{
|
||||||
if (token == null)
|
if (token == null)
|
||||||
throw new ArgumentNullException("token");
|
throw new ArgumentNullException("token");
|
||||||
|
|
||||||
MpdResponse response = await _connection.Exec("find", new string[] { TagConverter.ToTag(scopeSpecifier), token });
|
MpdResponse response = await _connection.Exec("find", new string[] { tag.Value, token });
|
||||||
|
|
||||||
if (response.IsError)
|
if (response.IsError)
|
||||||
throw new MpdResponseException(response.ErrorCode, response.ErrorMessage);
|
throw new MpdResponseException(response.ErrorCode, response.ErrorMessage);
|
||||||
@ -174,11 +174,11 @@ namespace LibMpc
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns all values found in files of the MPD for the given attribute.
|
/// Returns all values found in files of the MPD for the given attribute.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="scopeSpecifier">The attribute who's values are requested.</param>
|
/// <param name="tag">The attribute who's values are requested.</param>
|
||||||
/// <returns>All values found in files of the MPD for the given attribute.</returns>
|
/// <returns>All values found in files of the MPD for the given attribute.</returns>
|
||||||
public async Task<List<string>> ListAsync(ScopeSpecifier scopeSpecifier)
|
public async Task<List<string>> ListAsync(ITag tag)
|
||||||
{
|
{
|
||||||
MpdResponse response = await _connection.Exec("list", new string[] { TagConverter.ToTag(scopeSpecifier) });
|
MpdResponse response = await _connection.Exec("list", new string[] { tag.Value });
|
||||||
|
|
||||||
if (response.IsError)
|
if (response.IsError)
|
||||||
throw new MpdResponseException(response.ErrorCode, response.ErrorMessage);
|
throw new MpdResponseException(response.ErrorCode, response.ErrorMessage);
|
||||||
@ -192,12 +192,12 @@ namespace LibMpc
|
|||||||
/// <param name="searchTag">The attribute whos value should match a given value for the file to be included in the result.</param>
|
/// <param name="searchTag">The attribute whos value should match a given value for the file to be included in the result.</param>
|
||||||
/// <param name="searchValue">The value the searchTag attribute must match for the file to be included in the result.</param>
|
/// <param name="searchValue">The value the searchTag attribute must match for the file to be included in the result.</param>
|
||||||
/// <returns>All values found in files of the MPD for the given attribute.</returns>
|
/// <returns>All values found in files of the MPD for the given attribute.</returns>
|
||||||
public async Task<List<string>> ListAsync(ScopeSpecifier resultTag, ScopeSpecifier searchTag, string searchValue)
|
public async Task<List<string>> ListAsync(ITag resultTag, ITag searchTag, string searchValue)
|
||||||
{
|
{
|
||||||
if (searchValue == null)
|
if (searchValue == null)
|
||||||
throw new ArgumentNullException("searchValue");
|
throw new ArgumentNullException("searchValue");
|
||||||
|
|
||||||
MpdResponse response = await _connection.Exec("list", new string[] { TagConverter.ToTag(resultTag), TagConverter.ToTag(searchTag), searchValue });
|
MpdResponse response = await _connection.Exec("list", new string[] { resultTag.Value, searchTag.Value, searchValue });
|
||||||
|
|
||||||
if (response.IsError)
|
if (response.IsError)
|
||||||
throw new MpdResponseException(response.ErrorCode, response.ErrorMessage);
|
throw new MpdResponseException(response.ErrorCode, response.ErrorMessage);
|
||||||
@ -270,15 +270,15 @@ namespace LibMpc
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns all files in the database who's attribute matches the given token. Works like the Find command but is case insensitive.
|
/// Returns all files in the database who's attribute matches the given token. Works like the Find command but is case insensitive.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="scopeSpecifier">Specifies the attribute to search for.</param>
|
/// <param name="tag">Specifies the attribute to search for.</param>
|
||||||
/// <param name="token">The value the files attribute must have to be included in the result.</param>
|
/// <param name="token">The value the files attribute must have to be included in the result.</param>
|
||||||
/// <returns>All files in the database who's attribute matches the given token.</returns>
|
/// <returns>All files in the database who's attribute matches the given token.</returns>
|
||||||
public async Task<List<MpdFile>> SearchAsync(ScopeSpecifier scopeSpecifier, string token)
|
public async Task<List<MpdFile>> SearchAsync(ITag tag, string token)
|
||||||
{
|
{
|
||||||
if (token == null)
|
if (token == null)
|
||||||
throw new ArgumentNullException("token");
|
throw new ArgumentNullException("token");
|
||||||
|
|
||||||
MpdResponse response = await _connection.Exec("search", new string[] { TagConverter.ToTag(scopeSpecifier), token });
|
MpdResponse response = await _connection.Exec("search", new string[] { tag.Value, token });
|
||||||
|
|
||||||
if (response.IsError)
|
if (response.IsError)
|
||||||
throw new MpdResponseException(response.ErrorCode, response.ErrorMessage);
|
throw new MpdResponseException(response.ErrorCode, response.ErrorMessage);
|
||||||
@ -707,15 +707,15 @@ namespace LibMpc
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns the meta data for all tracks in the current playlist whos attribute equals the given value.
|
/// Returns the meta data for all tracks in the current playlist whos attribute equals the given value.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="scopeSpecifier">The attribute to search for the given value.</param>
|
/// <param name="tag">The attribute to search for the given value.</param>
|
||||||
/// <param name="token">The value to search for in the given attribute.</param>
|
/// <param name="token">The value to search for in the given attribute.</param>
|
||||||
/// <returns>The meta data for all tracks in the current playlist whos attribute equals the given value.</returns>
|
/// <returns>The meta data for all tracks in the current playlist whos attribute equals the given value.</returns>
|
||||||
public async Task<List<MpdFile>> PlaylistFindAsync(ScopeSpecifier scopeSpecifier, string token)
|
public async Task<List<MpdFile>> PlaylistFindAsync(ITag tag, string token)
|
||||||
{
|
{
|
||||||
if (token == null)
|
if (token == null)
|
||||||
throw new ArgumentNullException("token");
|
throw new ArgumentNullException("token");
|
||||||
|
|
||||||
MpdResponse response = await _connection.Exec("playlistfind", new string[] { TagConverter.ToTag(scopeSpecifier), token });
|
MpdResponse response = await _connection.Exec("playlistfind", new string[] { tag.Value, token });
|
||||||
|
|
||||||
if (response.IsError)
|
if (response.IsError)
|
||||||
throw new MpdResponseException(response.ErrorCode, response.ErrorMessage);
|
throw new MpdResponseException(response.ErrorCode, response.ErrorMessage);
|
||||||
@ -725,15 +725,15 @@ namespace LibMpc
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns the meta data for all tracks in the current playlist whos attribute contains the given value.
|
/// Returns the meta data for all tracks in the current playlist whos attribute contains the given value.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="scopeSpecifier">The attribute to search for the given value.</param>
|
/// <param name="tag">The attribute to search for the given value.</param>
|
||||||
/// <param name="token">The value to search for in the given attribute.</param>
|
/// <param name="token">The value to search for in the given attribute.</param>
|
||||||
/// <returns>The meta data for all tracks in the current playlist whos attribute contains the given value.</returns>
|
/// <returns>The meta data for all tracks in the current playlist whos attribute contains the given value.</returns>
|
||||||
public async Task<List<MpdFile>> PlaylistSearchAsync(ScopeSpecifier scopeSpecifier, string token)
|
public async Task<List<MpdFile>> PlaylistSearchAsync(ITag tag, string token)
|
||||||
{
|
{
|
||||||
if (token == null)
|
if (token == null)
|
||||||
throw new ArgumentNullException("token");
|
throw new ArgumentNullException("token");
|
||||||
|
|
||||||
MpdResponse response = await _connection.Exec("playlistsearch", new string[] { TagConverter.ToTag(scopeSpecifier), token });
|
MpdResponse response = await _connection.Exec("playlistsearch", new string[] { tag.Value, token });
|
||||||
|
|
||||||
if (response.IsError)
|
if (response.IsError)
|
||||||
throw new MpdResponseException(response.ErrorCode, response.ErrorMessage);
|
throw new MpdResponseException(response.ErrorCode, response.ErrorMessage);
|
||||||
|
@ -1,56 +0,0 @@
|
|||||||
using System;
|
|
||||||
|
|
||||||
namespace LibMpc
|
|
||||||
{
|
|
||||||
public static class TagConverter
|
|
||||||
{
|
|
||||||
private const string TagAny = "any";
|
|
||||||
private const string TagFilename = "filename";
|
|
||||||
private const string TagArtist = "artist";
|
|
||||||
private const string TagAlbum = "album";
|
|
||||||
private const string TagTitle = "title";
|
|
||||||
private const string TagTrack = "track";
|
|
||||||
private const string TagName = "name";
|
|
||||||
private const string TagGenre = "genre";
|
|
||||||
private const string TagDate = "date";
|
|
||||||
private const string TagComposer = "composer";
|
|
||||||
private const string TagPerformer = "performer";
|
|
||||||
private const string TagComment = "comment";
|
|
||||||
private const string TagDisc = "disc";
|
|
||||||
|
|
||||||
public static string ToTag(ScopeSpecifier scopeSpecifier)
|
|
||||||
{
|
|
||||||
switch (scopeSpecifier)
|
|
||||||
{
|
|
||||||
default:
|
|
||||||
throw new ArgumentException("scopeSpecifier");
|
|
||||||
case ScopeSpecifier.Any:
|
|
||||||
return TagAny;
|
|
||||||
case ScopeSpecifier.Filename:
|
|
||||||
return TagFilename;
|
|
||||||
case ScopeSpecifier.Artist:
|
|
||||||
return TagArtist;
|
|
||||||
case ScopeSpecifier.Album:
|
|
||||||
return TagAlbum;
|
|
||||||
case ScopeSpecifier.Title:
|
|
||||||
return TagTitle;
|
|
||||||
case ScopeSpecifier.Track:
|
|
||||||
return TagTrack;
|
|
||||||
case ScopeSpecifier.Name:
|
|
||||||
return TagName;
|
|
||||||
case ScopeSpecifier.Genre:
|
|
||||||
return TagGenre;
|
|
||||||
case ScopeSpecifier.Date:
|
|
||||||
return TagDate;
|
|
||||||
case ScopeSpecifier.Composer:
|
|
||||||
return TagComposer;
|
|
||||||
case ScopeSpecifier.Performer:
|
|
||||||
return TagPerformer;
|
|
||||||
case ScopeSpecifier.Comment:
|
|
||||||
return TagComment;
|
|
||||||
case ScopeSpecifier.Disc:
|
|
||||||
return TagDisc;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
34
LibMpc/Tags.cs
Normal file
34
LibMpc/Tags.cs
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
namespace LibMpc
|
||||||
|
{
|
||||||
|
public class Tags
|
||||||
|
{
|
||||||
|
internal class Tag : ITag
|
||||||
|
{
|
||||||
|
internal Tag(string value)
|
||||||
|
{
|
||||||
|
Value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Value { get; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public ITag Any { get; } = new Tag("any");
|
||||||
|
public ITag Filename { get; } = new Tag("filename");
|
||||||
|
public ITag Artist { get; }= new Tag("artist");
|
||||||
|
public ITag Album { get; }= new Tag("album");
|
||||||
|
public ITag Title { get; } = new Tag("title");
|
||||||
|
public ITag Track { get; } = new Tag("track");
|
||||||
|
public ITag Name { get; } = new Tag("name");
|
||||||
|
public ITag Genre { get; } = new Tag("genre");
|
||||||
|
public ITag Date { get; } = new Tag("date");
|
||||||
|
public ITag Composer { get; } = new Tag("composer");
|
||||||
|
public ITag Performer { get; } = new Tag("performer");
|
||||||
|
public ITag Comment { get; } = new Tag("comment");
|
||||||
|
public ITag Disc { get; } = new Tag("disc");
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface ITag
|
||||||
|
{
|
||||||
|
string Value { get; }
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user