command: new commands "findin", "searchin" with base URI
This commit is contained in:
parent
17ec3b0c2d
commit
a577944ab5
1
NEWS
1
NEWS
@ -5,6 +5,7 @@ ver 0.18 (2012/??/??)
|
|||||||
* protocol:
|
* protocol:
|
||||||
- new command "readcomments" lists arbitrary file tags
|
- new command "readcomments" lists arbitrary file tags
|
||||||
- new command "toggleoutput"
|
- new command "toggleoutput"
|
||||||
|
- new commands "findin", "searchin" with base URI
|
||||||
- search for album artist falls back to the artist tag
|
- search for album artist falls back to the artist tag
|
||||||
- re-add the "volume" command
|
- re-add the "volume" command
|
||||||
* input:
|
* input:
|
||||||
|
@ -1491,6 +1491,23 @@ OK
|
|||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
<varlistentry id="command_findin">
|
||||||
|
<term>
|
||||||
|
<cmdsynopsis>
|
||||||
|
<command>findin</command>
|
||||||
|
<arg choice="req"><replaceable>URI</replaceable></arg>
|
||||||
|
<arg choice="req"><replaceable>TYPE</replaceable></arg>
|
||||||
|
<arg choice="req"><replaceable>WHAT</replaceable></arg>
|
||||||
|
<arg choice="opt"><replaceable>...</replaceable></arg>
|
||||||
|
</cmdsynopsis>
|
||||||
|
</term>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
Like <command>find</command>, but allows specifying a
|
||||||
|
base URI for the find.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
<varlistentry id="command_findadd">
|
<varlistentry id="command_findadd">
|
||||||
<term>
|
<term>
|
||||||
<cmdsynopsis>
|
<cmdsynopsis>
|
||||||
@ -1626,6 +1643,23 @@ OK
|
|||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
<varlistentry id="command_searchin">
|
||||||
|
<term>
|
||||||
|
<cmdsynopsis>
|
||||||
|
<command>searchin</command>
|
||||||
|
<arg choice="req"><replaceable>URI</replaceable></arg>
|
||||||
|
<arg choice="req"><replaceable>TYPE</replaceable></arg>
|
||||||
|
<arg choice="req"><replaceable>WHAT</replaceable></arg>
|
||||||
|
<arg choice="opt"><replaceable>...</replaceable></arg>
|
||||||
|
</cmdsynopsis>
|
||||||
|
</term>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
Like <command>search</command>, but allows specifying a
|
||||||
|
base URI for the search.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
<varlistentry id="command_searchadd">
|
<varlistentry id="command_searchadd">
|
||||||
<term>
|
<term>
|
||||||
<cmdsynopsis>
|
<cmdsynopsis>
|
||||||
|
@ -91,6 +91,7 @@ static const struct command commands[] = {
|
|||||||
{ "enableoutput", PERMISSION_ADMIN, 1, 1, handle_enableoutput },
|
{ "enableoutput", PERMISSION_ADMIN, 1, 1, handle_enableoutput },
|
||||||
{ "find", PERMISSION_READ, 2, -1, handle_find },
|
{ "find", PERMISSION_READ, 2, -1, handle_find },
|
||||||
{ "findadd", PERMISSION_READ, 2, -1, handle_findadd},
|
{ "findadd", PERMISSION_READ, 2, -1, handle_findadd},
|
||||||
|
{ "findin", PERMISSION_READ, 3, -1, handle_find_in },
|
||||||
{ "idle", PERMISSION_READ, 0, -1, handle_idle },
|
{ "idle", PERMISSION_READ, 0, -1, handle_idle },
|
||||||
{ "kill", PERMISSION_ADMIN, -1, -1, handle_kill },
|
{ "kill", PERMISSION_ADMIN, -1, -1, handle_kill },
|
||||||
{ "list", PERMISSION_READ, 1, -1, handle_list },
|
{ "list", PERMISSION_READ, 1, -1, handle_list },
|
||||||
@ -142,6 +143,7 @@ static const struct command commands[] = {
|
|||||||
{ "search", PERMISSION_READ, 2, -1, handle_search },
|
{ "search", PERMISSION_READ, 2, -1, handle_search },
|
||||||
{ "searchadd", PERMISSION_ADD, 2, -1, handle_searchadd },
|
{ "searchadd", PERMISSION_ADD, 2, -1, handle_searchadd },
|
||||||
{ "searchaddpl", PERMISSION_CONTROL, 3, -1, handle_searchaddpl },
|
{ "searchaddpl", PERMISSION_CONTROL, 3, -1, handle_searchaddpl },
|
||||||
|
{ "searchin", PERMISSION_READ, 3, -1, handle_search_in },
|
||||||
{ "seek", PERMISSION_CONTROL, 2, 2, handle_seek },
|
{ "seek", PERMISSION_CONTROL, 2, 2, handle_seek },
|
||||||
{ "seekcur", PERMISSION_CONTROL, 1, 1, handle_seekcur },
|
{ "seekcur", PERMISSION_CONTROL, 1, 1, handle_seekcur },
|
||||||
{ "seekid", PERMISSION_CONTROL, 2, 2, handle_seekid },
|
{ "seekid", PERMISSION_CONTROL, 2, 2, handle_seekid },
|
||||||
|
@ -55,7 +55,8 @@ handle_lsinfo2(Client &client, int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
static CommandResult
|
static CommandResult
|
||||||
handle_match(Client &client, int argc, char *argv[], bool fold_case)
|
handle_match(Client &client, int argc, char *argv[],
|
||||||
|
const char *uri, bool fold_case)
|
||||||
{
|
{
|
||||||
SongFilter filter;
|
SongFilter filter;
|
||||||
if (!filter.Parse(argc - 1, argv + 1, fold_case)) {
|
if (!filter.Parse(argc - 1, argv + 1, fold_case)) {
|
||||||
@ -63,7 +64,7 @@ handle_match(Client &client, int argc, char *argv[], bool fold_case)
|
|||||||
return CommandResult::ERROR;
|
return CommandResult::ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
const DatabaseSelection selection("", true, &filter);
|
const DatabaseSelection selection(uri, true, &filter);
|
||||||
|
|
||||||
Error error;
|
Error error;
|
||||||
return db_selection_print(client, selection, true, error)
|
return db_selection_print(client, selection, true, error)
|
||||||
@ -74,13 +75,25 @@ handle_match(Client &client, int argc, char *argv[], bool fold_case)
|
|||||||
CommandResult
|
CommandResult
|
||||||
handle_find(Client &client, int argc, char *argv[])
|
handle_find(Client &client, int argc, char *argv[])
|
||||||
{
|
{
|
||||||
return handle_match(client, argc, argv, false);
|
return handle_match(client, argc, argv, "", false);
|
||||||
|
}
|
||||||
|
|
||||||
|
CommandResult
|
||||||
|
handle_find_in(Client &client, int argc, char *argv[])
|
||||||
|
{
|
||||||
|
return handle_match(client, argc - 1, argv + 1, argv[1], false);
|
||||||
}
|
}
|
||||||
|
|
||||||
CommandResult
|
CommandResult
|
||||||
handle_search(Client &client, int argc, char *argv[])
|
handle_search(Client &client, int argc, char *argv[])
|
||||||
{
|
{
|
||||||
return handle_match(client, argc, argv, true);
|
return handle_match(client, argc, argv, "", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
CommandResult
|
||||||
|
handle_search_in(Client &client, int argc, char *argv[])
|
||||||
|
{
|
||||||
|
return handle_match(client, argc - 1, argv + 1, argv[1], true);
|
||||||
}
|
}
|
||||||
|
|
||||||
static CommandResult
|
static CommandResult
|
||||||
|
@ -30,12 +30,18 @@ handle_lsinfo2(Client &client, int argc, char *argv[]);
|
|||||||
CommandResult
|
CommandResult
|
||||||
handle_find(Client &client, int argc, char *argv[]);
|
handle_find(Client &client, int argc, char *argv[]);
|
||||||
|
|
||||||
|
CommandResult
|
||||||
|
handle_find_in(Client &client, int argc, char *argv[]);
|
||||||
|
|
||||||
CommandResult
|
CommandResult
|
||||||
handle_findadd(Client &client, int argc, char *argv[]);
|
handle_findadd(Client &client, int argc, char *argv[]);
|
||||||
|
|
||||||
CommandResult
|
CommandResult
|
||||||
handle_search(Client &client, int argc, char *argv[]);
|
handle_search(Client &client, int argc, char *argv[]);
|
||||||
|
|
||||||
|
CommandResult
|
||||||
|
handle_search_in(Client &client, int argc, char *argv[]);
|
||||||
|
|
||||||
CommandResult
|
CommandResult
|
||||||
handle_searchadd(Client &client, int argc, char *argv[]);
|
handle_searchadd(Client &client, int argc, char *argv[]);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user