// Documentation // XML-RPC commands for MJUK login(username, password) -> sid getPublicLocations() -> (id, name & description)* ?set location getLocations(SID) -> (id, name & description)* getLocation(SID) -> name & description login_with_location(username, password, location) -> sid logout(SID) -> ok // // PLAYING // play(SID) -> started | is_playing | error stop(SID) -> stopped | is_stopped | error pause(SID, toggle) -> is_playing | is_paused | error next(SID) -> next_track | stop | error | error_no_next_track get status(SID) -> STATE &| trackid,title,albumid,albumtitle,artists[id,name],rate // // rating // setTrackRate(SID, trackid, rate) -> status setAlbumRate(SID, albumid, rate) -> status setArtistRate(SID, artistid, rate) -> status // // info // getAlbumShortInfo(SID, albumid) -> status &| albumid, albumname, rate, ( (recordid, name,volume,(trackid,...)), ...))) getTrackShortInfo(SID, trackid) -> status &| id, title, number on album, rate getArtistShortInfo(SID, artistid) -> status &| id, artistname, list of album ids, rate getTrackLongInfo(SID, trackid) -> [trackId,title,trackno,length,copyrightYear,gain,peak, quality,codecVersion,codecVendor, rate, albumid, albumname, artists[id,name]] // // queue // enqueue(SID, trackid) -> error (trackid) | ok ?dequeue(SID, trackid) -> error (trackid) | ok getqueue(SID) -> (trackid, tracktitle, albumid, albumname, artists[id,name])* ?queueinfo(SID) -> number of tracks on queue,random,length,repeat // // search // search (SID, return type, caseSensitive, and, sorting column, query) -> id* eg. search, sid, "TArtist", 0, 1, "Track artist name", [["Track artist name", "contains", "bobo"]] ?import