implemented songid commands: playlistid, playid, seekid, deleteid, moveid, swapid
git-svn-id: https://svn.musicpd.org/mpd/trunk@1408 09075e82-0dd4-0310-85a5-a0d7c8717e4f
This commit is contained in:
parent
304639c9a6
commit
d217505dc6
3
TODO
3
TODO
@ -1,6 +1,3 @@
|
|||||||
*) add songids
|
|
||||||
a) add playlistid, moveid, swapid, deleteid, playid, seekid
|
|
||||||
|
|
||||||
*) put some sort of error reporting for streaming/inputStream!
|
*) put some sort of error reporting for streaming/inputStream!
|
||||||
|
|
||||||
*) Fix charset errors so they don't goto stderr/out
|
*) Fix charset errors so they don't goto stderr/out
|
||||||
|
134
src/command.c
134
src/command.c
@ -38,6 +38,7 @@
|
|||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
#define COMMAND_PLAY "play"
|
#define COMMAND_PLAY "play"
|
||||||
|
#define COMMAND_PLAYID "playid"
|
||||||
#define COMMAND_STOP "stop"
|
#define COMMAND_STOP "stop"
|
||||||
#define COMMAND_PAUSE "pause"
|
#define COMMAND_PAUSE "pause"
|
||||||
#define COMMAND_STATUS "status"
|
#define COMMAND_STATUS "status"
|
||||||
@ -45,6 +46,7 @@
|
|||||||
#define COMMAND_CLOSE "close"
|
#define COMMAND_CLOSE "close"
|
||||||
#define COMMAND_ADD "add"
|
#define COMMAND_ADD "add"
|
||||||
#define COMMAND_DELETE "delete"
|
#define COMMAND_DELETE "delete"
|
||||||
|
#define COMMAND_DELETEID "deleteid"
|
||||||
#define COMMAND_PLAYLIST "playlist"
|
#define COMMAND_PLAYLIST "playlist"
|
||||||
#define COMMAND_SHUFFLE "shuffle"
|
#define COMMAND_SHUFFLE "shuffle"
|
||||||
#define COMMAND_CLEAR "clear"
|
#define COMMAND_CLEAR "clear"
|
||||||
@ -53,6 +55,7 @@
|
|||||||
#define COMMAND_LSINFO "lsinfo"
|
#define COMMAND_LSINFO "lsinfo"
|
||||||
#define COMMAND_RM "rm"
|
#define COMMAND_RM "rm"
|
||||||
#define COMMAND_PLAYLISTINFO "playlistinfo"
|
#define COMMAND_PLAYLISTINFO "playlistinfo"
|
||||||
|
#define COMMAND_PLAYLISTID "playlistid"
|
||||||
#define COMMAND_FIND "find"
|
#define COMMAND_FIND "find"
|
||||||
#define COMMAND_SEARCH "search"
|
#define COMMAND_SEARCH "search"
|
||||||
#define COMMAND_UPDATE "update"
|
#define COMMAND_UPDATE "update"
|
||||||
@ -66,8 +69,11 @@
|
|||||||
#define COMMAND_CLEAR_ERROR "clearerror"
|
#define COMMAND_CLEAR_ERROR "clearerror"
|
||||||
#define COMMAND_LIST "list"
|
#define COMMAND_LIST "list"
|
||||||
#define COMMAND_MOVE "move"
|
#define COMMAND_MOVE "move"
|
||||||
|
#define COMMAND_MOVEID "moveid"
|
||||||
#define COMMAND_SWAP "swap"
|
#define COMMAND_SWAP "swap"
|
||||||
|
#define COMMAND_SWAPID "swapid"
|
||||||
#define COMMAND_SEEK "seek"
|
#define COMMAND_SEEK "seek"
|
||||||
|
#define COMMAND_SEEKID "seekid"
|
||||||
#define COMMAND_LISTALLINFO "listallinfo"
|
#define COMMAND_LISTALLINFO "listallinfo"
|
||||||
#define COMMAND_PING "ping"
|
#define COMMAND_PING "ping"
|
||||||
#define COMMAND_SETVOL "setvol"
|
#define COMMAND_SETVOL "setvol"
|
||||||
@ -83,6 +89,7 @@
|
|||||||
#define COMMAND_STATUS_PLAYLIST "playlist"
|
#define COMMAND_STATUS_PLAYLIST "playlist"
|
||||||
#define COMMAND_STATUS_PLAYLIST_LENGTH "playlistlength"
|
#define COMMAND_STATUS_PLAYLIST_LENGTH "playlistlength"
|
||||||
#define COMMAND_STATUS_SONG "song"
|
#define COMMAND_STATUS_SONG "song"
|
||||||
|
#define COMMAND_STATUS_SONGID "songid"
|
||||||
#define COMMAND_STATUS_TIME "time"
|
#define COMMAND_STATUS_TIME "time"
|
||||||
#define COMMAND_STATUS_BITRATE "bitrate"
|
#define COMMAND_STATUS_BITRATE "bitrate"
|
||||||
#define COMMAND_STATUS_ERROR "error"
|
#define COMMAND_STATUS_ERROR "error"
|
||||||
@ -163,6 +170,23 @@ int handlePlay(FILE * fp, unsigned int * permission, int argArrayLength,
|
|||||||
return playPlaylist(fp,song,0);
|
return playPlaylist(fp,song,0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int handlePlayId(FILE * fp, unsigned int * permission, int argArrayLength,
|
||||||
|
char ** argArray)
|
||||||
|
{
|
||||||
|
int id = -1;
|
||||||
|
char * test;
|
||||||
|
|
||||||
|
if(argArrayLength==2) {
|
||||||
|
id = strtol(argArray[1],&test,10);
|
||||||
|
if(*test!='\0') {
|
||||||
|
commandError(fp, ACK_ERROR_ARG,
|
||||||
|
"need a positive integer");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return playPlaylist(fp, id, 0);
|
||||||
|
}
|
||||||
|
|
||||||
int handleStop(FILE * fp, unsigned int * permission, int argArrayLength,
|
int handleStop(FILE * fp, unsigned int * permission, int argArrayLength,
|
||||||
char ** argArray)
|
char ** argArray)
|
||||||
{
|
{
|
||||||
@ -216,7 +240,11 @@ int commandStatus(FILE * fp, unsigned int * permission, int argArrayLength,
|
|||||||
myfprintf(fp,"%s: %s\n",COMMAND_STATUS_STATE,state);
|
myfprintf(fp,"%s: %s\n",COMMAND_STATUS_STATE,state);
|
||||||
|
|
||||||
song = getPlaylistCurrentSong();
|
song = getPlaylistCurrentSong();
|
||||||
if(song >= 0) myfprintf(fp,"%s: %i\n",COMMAND_STATUS_SONG,song);
|
if(song >= 0) {
|
||||||
|
myfprintf(fp,"%s: %i\n", COMMAND_STATUS_SONG, song);
|
||||||
|
myfprintf(fp,"%s: %i\n", COMMAND_STATUS_SONGID,
|
||||||
|
getPlaylistSongId(song));
|
||||||
|
}
|
||||||
if(getPlayerState()!=PLAYER_STATE_STOP) {
|
if(getPlayerState()!=PLAYER_STATE_STOP) {
|
||||||
myfprintf(fp,"%s: %i:%i\n",COMMAND_STATUS_TIME,getPlayerElapsedTime(),getPlayerTotalTime());
|
myfprintf(fp,"%s: %i:%i\n",COMMAND_STATUS_TIME,getPlayerElapsedTime(),getPlayerTotalTime());
|
||||||
myfprintf(fp,"%s: %li\n",COMMAND_STATUS_BITRATE,getPlayerBitRate(),getPlayerTotalTime());
|
myfprintf(fp,"%s: %li\n",COMMAND_STATUS_BITRATE,getPlayerBitRate(),getPlayerTotalTime());
|
||||||
@ -275,6 +303,21 @@ int handleDelete(FILE * fp, unsigned int * permission, int argArrayLength,
|
|||||||
return deleteFromPlaylist(fp,song);
|
return deleteFromPlaylist(fp,song);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int handleDeleteId(FILE * fp, unsigned int * permission, int argArrayLength,
|
||||||
|
char ** argArray)
|
||||||
|
{
|
||||||
|
int id;
|
||||||
|
char * test;
|
||||||
|
|
||||||
|
id = strtol(argArray[1],&test,10);
|
||||||
|
if(*test!='\0') {
|
||||||
|
commandError(fp, ACK_ERROR_ARG,
|
||||||
|
"need a positive integer");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return deleteFromPlaylist(fp, id);
|
||||||
|
}
|
||||||
|
|
||||||
int handlePlaylist(FILE * fp, unsigned int * permission, int argArrayLength,
|
int handlePlaylist(FILE * fp, unsigned int * permission, int argArrayLength,
|
||||||
char ** argArray)
|
char ** argArray)
|
||||||
{
|
{
|
||||||
@ -355,6 +398,23 @@ int handlePlaylistInfo(FILE * fp, unsigned int * permission,
|
|||||||
return playlistInfo(fp,song);
|
return playlistInfo(fp,song);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int handlePlaylistId(FILE * fp, unsigned int * permission,
|
||||||
|
int argArrayLength, char ** argArray)
|
||||||
|
{
|
||||||
|
int id = -1;
|
||||||
|
char * test;
|
||||||
|
|
||||||
|
if(argArrayLength == 2) {
|
||||||
|
id = strtol(argArray[1],&test,10);
|
||||||
|
if(*test!='\0') {
|
||||||
|
commandError(fp, ACK_ERROR_ARG,
|
||||||
|
"%s need a positive integer");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return playlistId(fp, id);
|
||||||
|
}
|
||||||
|
|
||||||
int handleFind(FILE * fp, unsigned int * permission, int argArrayLength,
|
int handleFind(FILE * fp, unsigned int * permission, int argArrayLength,
|
||||||
char ** argArray)
|
char ** argArray)
|
||||||
{
|
{
|
||||||
@ -529,6 +589,28 @@ int handleMove(FILE * fp, unsigned int * permission, int argArrayLength,
|
|||||||
return moveSongInPlaylist(fp,from,to);
|
return moveSongInPlaylist(fp,from,to);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int handleMoveId(FILE * fp, unsigned int * permission, int argArrayLength,
|
||||||
|
char ** argArray)
|
||||||
|
{
|
||||||
|
int id;
|
||||||
|
int to;
|
||||||
|
char * test;
|
||||||
|
|
||||||
|
id = strtol(argArray[1],&test,10);
|
||||||
|
if(*test!='\0') {
|
||||||
|
commandError(fp, ACK_ERROR_ARG,
|
||||||
|
"\"%s\" is not a integer", argArray[1]);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
to = strtol(argArray[2],&test,10);
|
||||||
|
if(*test!='\0') {
|
||||||
|
commandError(fp, ACK_ERROR_ARG,
|
||||||
|
"\"%s\" is not a integer", argArray[2]);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return moveSongInPlaylistById(fp, id, to);
|
||||||
|
}
|
||||||
|
|
||||||
int handleSwap(FILE * fp, unsigned int * permission, int argArrayLength,
|
int handleSwap(FILE * fp, unsigned int * permission, int argArrayLength,
|
||||||
char ** argArray)
|
char ** argArray)
|
||||||
{
|
{
|
||||||
@ -551,6 +633,28 @@ int handleSwap(FILE * fp, unsigned int * permission, int argArrayLength,
|
|||||||
return swapSongsInPlaylist(fp,song1,song2);
|
return swapSongsInPlaylist(fp,song1,song2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int handleSwapId(FILE * fp, unsigned int * permission, int argArrayLength,
|
||||||
|
char ** argArray)
|
||||||
|
{
|
||||||
|
int id1;
|
||||||
|
int id2;
|
||||||
|
char * test;
|
||||||
|
|
||||||
|
id1 = strtol(argArray[1],&test,10);
|
||||||
|
if(*test!='\0') {
|
||||||
|
commandError(fp, ACK_ERROR_ARG,
|
||||||
|
"\"%s\" is not a integer", argArray[1]);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
id2 = strtol(argArray[2],&test,10);
|
||||||
|
if(*test!='\0') {
|
||||||
|
commandError(fp, ACK_ERROR_ARG, "\"%s\" is not a integer",
|
||||||
|
argArray[2]);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return swapSongsInPlaylist(fp, id1, id2);
|
||||||
|
}
|
||||||
|
|
||||||
int handleSeek(FILE * fp, unsigned int * permission, int argArrayLength,
|
int handleSeek(FILE * fp, unsigned int * permission, int argArrayLength,
|
||||||
char ** argArray)
|
char ** argArray)
|
||||||
{
|
{
|
||||||
@ -573,6 +677,28 @@ int handleSeek(FILE * fp, unsigned int * permission, int argArrayLength,
|
|||||||
return seekSongInPlaylist(fp,song,time);
|
return seekSongInPlaylist(fp,song,time);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int handleSeekId(FILE * fp, unsigned int * permission, int argArrayLength,
|
||||||
|
char ** argArray)
|
||||||
|
{
|
||||||
|
int id;
|
||||||
|
int time;
|
||||||
|
char * test;
|
||||||
|
|
||||||
|
id = strtol(argArray[1],&test,10);
|
||||||
|
if(*test!='\0') {
|
||||||
|
commandError(fp, ACK_ERROR_ARG,
|
||||||
|
"\"%s\" is not a integer", argArray[1]);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
time = strtol(argArray[2],&test,10);
|
||||||
|
if(*test!='\0') {
|
||||||
|
commandError(fp, ACK_ERROR_ARG,
|
||||||
|
"\"%s\" is not a integer", argArray[2]);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return seekSongInPlaylist(fp, id, time);
|
||||||
|
}
|
||||||
|
|
||||||
int handleListAllInfo(FILE * fp, unsigned int * permission, int argArrayLength,
|
int handleListAllInfo(FILE * fp, unsigned int * permission, int argArrayLength,
|
||||||
char ** argArray)
|
char ** argArray)
|
||||||
{
|
{
|
||||||
@ -621,6 +747,7 @@ void initCommands() {
|
|||||||
commandList = makeList(free);
|
commandList = makeList(free);
|
||||||
|
|
||||||
addCommand(COMMAND_PLAY ,PERMISSION_CONTROL, 0, 1,handlePlay,NULL);
|
addCommand(COMMAND_PLAY ,PERMISSION_CONTROL, 0, 1,handlePlay,NULL);
|
||||||
|
addCommand(COMMAND_PLAYID ,PERMISSION_CONTROL, 0, 1,handlePlayId,NULL);
|
||||||
addCommand(COMMAND_STOP ,PERMISSION_CONTROL, 0, 0,handleStop,NULL);
|
addCommand(COMMAND_STOP ,PERMISSION_CONTROL, 0, 0,handleStop,NULL);
|
||||||
addCommand(COMMAND_PAUSE ,PERMISSION_CONTROL, 0, 1,handlePause,NULL);
|
addCommand(COMMAND_PAUSE ,PERMISSION_CONTROL, 0, 1,handlePause,NULL);
|
||||||
addCommand(COMMAND_STATUS ,PERMISSION_READ, 0, 0,commandStatus,NULL);
|
addCommand(COMMAND_STATUS ,PERMISSION_READ, 0, 0,commandStatus,NULL);
|
||||||
@ -628,7 +755,9 @@ void initCommands() {
|
|||||||
addCommand(COMMAND_CLOSE ,0, -1,-1,handleClose,NULL);
|
addCommand(COMMAND_CLOSE ,0, -1,-1,handleClose,NULL);
|
||||||
addCommand(COMMAND_ADD ,PERMISSION_ADD, 0, 1,handleAdd,NULL);
|
addCommand(COMMAND_ADD ,PERMISSION_ADD, 0, 1,handleAdd,NULL);
|
||||||
addCommand(COMMAND_DELETE ,PERMISSION_CONTROL, 1, 1,handleDelete,NULL);
|
addCommand(COMMAND_DELETE ,PERMISSION_CONTROL, 1, 1,handleDelete,NULL);
|
||||||
|
addCommand(COMMAND_DELETEID ,PERMISSION_CONTROL, 1, 1,handleDeleteId,NULL);
|
||||||
addCommand(COMMAND_PLAYLIST ,PERMISSION_READ, 0, 0,handlePlaylist,NULL);
|
addCommand(COMMAND_PLAYLIST ,PERMISSION_READ, 0, 0,handlePlaylist,NULL);
|
||||||
|
addCommand(COMMAND_PLAYLISTID ,PERMISSION_READ, 0, 0,handlePlaylistId,NULL);
|
||||||
addCommand(COMMAND_SHUFFLE ,PERMISSION_CONTROL, 0, 0,handleShuffle,NULL);
|
addCommand(COMMAND_SHUFFLE ,PERMISSION_CONTROL, 0, 0,handleShuffle,NULL);
|
||||||
addCommand(COMMAND_CLEAR ,PERMISSION_CONTROL, 0, 0,handleClear,NULL);
|
addCommand(COMMAND_CLEAR ,PERMISSION_CONTROL, 0, 0,handleClear,NULL);
|
||||||
addCommand(COMMAND_SAVE ,PERMISSION_CONTROL, 1, 1,handleSave,NULL);
|
addCommand(COMMAND_SAVE ,PERMISSION_CONTROL, 1, 1,handleSave,NULL);
|
||||||
@ -649,8 +778,11 @@ void initCommands() {
|
|||||||
addCommand(COMMAND_CLEAR_ERROR ,PERMISSION_CONTROL, 0, 0,handleClearError,NULL);
|
addCommand(COMMAND_CLEAR_ERROR ,PERMISSION_CONTROL, 0, 0,handleClearError,NULL);
|
||||||
addCommand(COMMAND_LIST ,PERMISSION_READ, 1, 2,handleList,NULL);
|
addCommand(COMMAND_LIST ,PERMISSION_READ, 1, 2,handleList,NULL);
|
||||||
addCommand(COMMAND_MOVE ,PERMISSION_CONTROL, 2, 2,handleMove,NULL);
|
addCommand(COMMAND_MOVE ,PERMISSION_CONTROL, 2, 2,handleMove,NULL);
|
||||||
|
addCommand(COMMAND_MOVEID ,PERMISSION_CONTROL, 2, 2,handleMoveId,NULL);
|
||||||
addCommand(COMMAND_SWAP ,PERMISSION_CONTROL, 2, 2,handleSwap,NULL);
|
addCommand(COMMAND_SWAP ,PERMISSION_CONTROL, 2, 2,handleSwap,NULL);
|
||||||
|
addCommand(COMMAND_SWAPID ,PERMISSION_CONTROL, 2, 2,handleSwapId,NULL);
|
||||||
addCommand(COMMAND_SEEK ,PERMISSION_CONTROL, 2, 2,handleSeek,NULL);
|
addCommand(COMMAND_SEEK ,PERMISSION_CONTROL, 2, 2,handleSeek,NULL);
|
||||||
|
addCommand(COMMAND_SEEKID ,PERMISSION_CONTROL, 2, 2,handleSeekId,NULL);
|
||||||
addCommand(COMMAND_LISTALLINFO ,PERMISSION_READ, 0, 1,handleListAllInfo,NULL);
|
addCommand(COMMAND_LISTALLINFO ,PERMISSION_READ, 0, 1,handleListAllInfo,NULL);
|
||||||
addCommand(COMMAND_PING ,0, 0, 0,handlePing,NULL);
|
addCommand(COMMAND_PING ,0, 0, 0,handlePing,NULL);
|
||||||
addCommand(COMMAND_SETVOL ,PERMISSION_CONTROL, 1, 1,handleSetVol,NULL);
|
addCommand(COMMAND_SETVOL ,PERMISSION_CONTROL, 1, 1,handleSetVol,NULL);
|
||||||
|
@ -1081,12 +1081,10 @@ int moveSongInPlaylist(FILE * fp, int from, int to) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int moveSongInPlaylistById(FILE * fp, int id1, int id2) {
|
int moveSongInPlaylistById(FILE * fp, int id1, int to) {
|
||||||
checkSongId(id1);
|
checkSongId(id1);
|
||||||
checkSongId(id2);
|
|
||||||
|
|
||||||
return moveSongInPlaylist(fp, playlist.idToNum[id1],
|
return moveSongInPlaylist(fp, playlist.idToNum[id1], to);
|
||||||
playlist.idToNum[id2]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void orderPlaylist() {
|
void orderPlaylist() {
|
||||||
@ -1461,3 +1459,7 @@ int seekSongInPlaylistById(FILE * fp, int id, float time) {
|
|||||||
|
|
||||||
return seekSongInPlaylist(fp, playlist.idToNum[id], time);
|
return seekSongInPlaylist(fp, playlist.idToNum[id], time);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int getPlaylistSongId(int song) {
|
||||||
|
return playlist.numToId[song];
|
||||||
|
}
|
||||||
|
@ -50,12 +50,18 @@ int showPlaylist(FILE * fp);
|
|||||||
|
|
||||||
int deleteFromPlaylist(FILE * fp, int song);
|
int deleteFromPlaylist(FILE * fp, int song);
|
||||||
|
|
||||||
|
int deleteFromPlaylistById(FILE * fp, int song);
|
||||||
|
|
||||||
int playlistInfo(FILE * fp, int song);
|
int playlistInfo(FILE * fp, int song);
|
||||||
|
|
||||||
|
int playlistId(FILE * fp, int song);
|
||||||
|
|
||||||
int stopPlaylist(FILE * fp);
|
int stopPlaylist(FILE * fp);
|
||||||
|
|
||||||
int playPlaylist(FILE * fp, int song, int stopOnError);
|
int playPlaylist(FILE * fp, int song, int stopOnError);
|
||||||
|
|
||||||
|
int playPlaylistById(FILE * fp, int song, int stopOnError);
|
||||||
|
|
||||||
int nextSongInPlaylist(FILE * fp);
|
int nextSongInPlaylist(FILE * fp);
|
||||||
|
|
||||||
void syncPlayerAndPlaylist();
|
void syncPlayerAndPlaylist();
|
||||||
@ -68,12 +74,18 @@ int savePlaylist(FILE * fp, char * utf8file);
|
|||||||
|
|
||||||
int deletePlaylist(FILE * fp, char * utf8file);
|
int deletePlaylist(FILE * fp, char * utf8file);
|
||||||
|
|
||||||
|
int deletePlaylistById(FILE * fp, char * utf8file);
|
||||||
|
|
||||||
void deleteASongFromPlaylist(Song * song);
|
void deleteASongFromPlaylist(Song * song);
|
||||||
|
|
||||||
int moveSongInPlaylist(FILE * fp, int from, int to);
|
int moveSongInPlaylist(FILE * fp, int from, int to);
|
||||||
|
|
||||||
|
int moveSongInPlaylistById(FILE * fp, int id, int to);
|
||||||
|
|
||||||
int swapSongsInPlaylist(FILE * fp, int song1, int song2);
|
int swapSongsInPlaylist(FILE * fp, int song1, int song2);
|
||||||
|
|
||||||
|
int swapSongsInPlaylistById(FILE * fp, int id1, int id2);
|
||||||
|
|
||||||
int loadPlaylist(FILE * fp, char * utf8file);
|
int loadPlaylist(FILE * fp, char * utf8file);
|
||||||
|
|
||||||
int getPlaylistRepeatStatus();
|
int getPlaylistRepeatStatus();
|
||||||
@ -86,6 +98,8 @@ int setPlaylistRandomStatus(FILE * fp, int status);
|
|||||||
|
|
||||||
int getPlaylistCurrentSong();
|
int getPlaylistCurrentSong();
|
||||||
|
|
||||||
|
int getPlaylistSongId(int song);
|
||||||
|
|
||||||
int getPlaylistLength();
|
int getPlaylistLength();
|
||||||
|
|
||||||
unsigned long getPlaylistVersion();
|
unsigned long getPlaylistVersion();
|
||||||
@ -94,6 +108,8 @@ void playPlaylistIfPlayerStopped();
|
|||||||
|
|
||||||
int seekSongInPlaylist(FILE * fp, int song, float time);
|
int seekSongInPlaylist(FILE * fp, int song, float time);
|
||||||
|
|
||||||
|
int seekSongInPlaylistById(FILE * fp, int id, float time);
|
||||||
|
|
||||||
void playlistVersionChange();
|
void playlistVersionChange();
|
||||||
|
|
||||||
int playlistChanges(FILE * fp, mpd_uint32 version);
|
int playlistChanges(FILE * fp, mpd_uint32 version);
|
||||||
|
Loading…
Reference in New Issue
Block a user