[toc]
It exposes REST API for web-based MPD client.
It was inspired by mpd-api and andersevenrud/mycardashpoc
git clone https://github.com/hexh250786313/mpd-web-api
cd mpd-web-api
yarn start # http://localhost:8080 or "PORT=8980 yarn start" to use port 8980The "native" means that they are implemented for mpd-api
Every native API is prefixed with /mpd/native/ and corresponds to one of mpd-api function, see this: https://github.com/cotko/mpd-api#api
Native APIs are listed below.
Method of every native API is POST
- Method: POST
- URL:
/mpd/native/db/list - Body:
commandArgs: it means the arguments of mpd-api function. type:undefined | Array<string | boolean | number>{ "commandArgs": ["date", "(artist contains 'Empire')", ["album"]] // then you get the result of mpd-api function: client.db.list("date", "(artist contains 'Empire')", ["album"]) }
- Body
{ "code": 200, // 400 if got error from mpd-api function "message": "OK", // error message if got error from mpd-api function "data": [ // result from client.db.list("date", "(artist contains 'Empire')", ["album"]) { "file": "song.ape", "last_modified": "2017-01-04T17:39:57Z", "format": { "sample_rate": 44100, "bits": 16, "channels": 2, "original_value": "44100:16:2" }, "artist": "Empire", "album": "album", "title": "title", "track": 5, "genre": "Pop", "time": 290, "duration": 289.96 } ] }
-
Find the corresponding function in mpd-api, for example
db.search, the corresponding API is/mpd/native/db/search -
Pass parameters.
db.searchaccepts a string parameter, for exampledb.search('(artist contains "Empire")'), the API request would be:const { $fetch } = require('ohmyfetch') const mock = function (url) { if (!url) { throw new Error('Url required!') } const _fetch = async (commandArgs) => { const rawBody = { commandArgs } const opts = { method: 'post', headers: { 'Content-Type': 'application/json', Accept: 'application/json, text/plain, */*', }, credentials: 'include', mode: 'cors', cache: 'no-cache', body: JSON.parse(JSON.stringify(rawBody)), } return $fetch(url, opts).then((res) => { console.log(res) }) } return _fetch } mock('http://127.0.0.1:8080/mpd/native/db/search')(['(artist contains "Empire")'])
TODO
Only one api: /mpd/client/connect, it is used to change the host / port / password of a MPD client connection and it will not do anything if the connection is already established
- Method: POST
- URL:
/mpd/client/connect - Body:
url: type:stringpassword: type:string{ "url": "http://localhost:6600", // or "localhost:6600" "password": "123456" }
- Body
{ "code": 200, // 400 if MPD client has been connected "message": "MPD client is now listening on 'localhost:6600'", "data": null // { host: 'localhost', port: 6600, disconnected: false } if MPD client has been connected }
Connect to websocket server: ws://localhost:8080/
TODO
All POST
| Native API |
|---|
| /mpd/native/c2c/list |
| /mpd/native/c2c/subscribe |
| /mpd/native/c2c/unsubscribe |
| /mpd/native/c2c/sendMessage |
| /mpd/native/c2c/readMessages |
| /mpd/native/connection/close |
| /mpd/native/connection/kill |
| /mpd/native/connection/ping |
| /mpd/native/connection/getTagTypes |
| /mpd/native/connection/enableTagTypes |
| /mpd/native/connection/disableTagTypes |
| /mpd/native/connection/clearTagTypes |
| /mpd/native/connection/enableAllTagTypes |
| /mpd/native/connection/binarylimit |
| /mpd/native/db/listall |
| /mpd/native/db/listallinfo |
| /mpd/native/db/list |
| /mpd/native/db/count |
| /mpd/native/db/find |
| /mpd/native/db/findadd |
| /mpd/native/db/search |
| /mpd/native/db/searchadd |
| /mpd/native/db/searchaddpl |
| /mpd/native/db/lsinfo |
| /mpd/native/db/songinfo |
| /mpd/native/db/listfiles |
| /mpd/native/db/readcomments |
| /mpd/native/db/rescan |
| /mpd/native/db/update |
| /mpd/native/db/getfingerprint |
| /mpd/native/db/albumart |
| /mpd/native/db/albumartWhole |
| /mpd/native/db/readpicture |
| /mpd/native/db/readpictureWhole |
| /mpd/native/mounts/list |
| /mpd/native/mounts/listNeighbors |
| /mpd/native/mounts/mount |
| /mpd/native/mounts/unmount |
| /mpd/native/outputs/list |
| /mpd/native/outputs/enable |
| /mpd/native/outputs/disable |
| /mpd/native/outputs/toggle |
| /mpd/native/outputs/set |
| /mpd/native/partition/list |
| /mpd/native/partition/create |
| /mpd/native/partition/switchTo |
| /mpd/native/partition/delete |
| /mpd/native/partition/moveOutputToCurrentPartition |
| /mpd/native/playback/next |
| /mpd/native/playback/prev |
| /mpd/native/playback/pause |
| /mpd/native/playback/resume |
| /mpd/native/playback/toggle |
| /mpd/native/playback/play |
| /mpd/native/playback/playid |
| /mpd/native/playback/stop |
| /mpd/native/playback/seekcur |
| /mpd/native/playback/seek |
| /mpd/native/playback/seekid |
| /mpd/native/playback/getvol |
| /mpd/native/playback/consume |
| /mpd/native/playback/crossfade |
| /mpd/native/playback/mixrampdb |
| /mpd/native/playback/mixrampdelay |
| /mpd/native/playback/random |
| /mpd/native/playback/repeat |
| /mpd/native/playback/single |
| /mpd/native/playback/setvol |
| /mpd/native/playback/setReplayGain |
| /mpd/native/playback/getReplayGain |
| /mpd/native/playlists/get |
| /mpd/native/playlists/list |
| /mpd/native/playlists/listinfo |
| /mpd/native/playlists/load |
| /mpd/native/playlists/add |
| /mpd/native/playlists/clear |
| /mpd/native/playlists/deleteAt |
| /mpd/native/playlists/move |
| /mpd/native/playlists/rename |
| /mpd/native/playlists/remove |
| /mpd/native/playlists/save |
| /mpd/native/queue/add |
| /mpd/native/queue/addid |
| /mpd/native/queue/clear |
| /mpd/native/queue/info |
| /mpd/native/queue/id |
| /mpd/native/queue/delete |
| /mpd/native/queue/deleteid |
| /mpd/native/queue/move |
| /mpd/native/queue/moveid |
| /mpd/native/queue/find |
| /mpd/native/queue/search |
| /mpd/native/queue/prio |
| /mpd/native/queue/prioid |
| /mpd/native/queue/shuffle |
| /mpd/native/queue/swap |
| /mpd/native/queue/swapid |
| /mpd/native/queue/addtagid |
| /mpd/native/queue/cleartagid |
| /mpd/native/queue/getChanges |
| /mpd/native/queue/getChangesPosId |
| /mpd/native/queue/rangeid |
| /mpd/native/reflection/config |
| /mpd/native/reflection/commands |
| /mpd/native/reflection/notcommands |
| /mpd/native/reflection/urlhandlers |
| /mpd/native/reflection/decoders |
| /mpd/native/status/get |
| /mpd/native/status/clearerror |
| /mpd/native/status/currentsong |
| /mpd/native/status/stats |
| /mpd/native/sticker/list |
| /mpd/native/sticker/set |
| /mpd/native/sticker/get |
| /mpd/native/sticker/delete |
| /mpd/native/sticker/deleteAll |
| /mpd/native/sticker/find |
| /mpd/native/sticker/search |
| Web APIs |
|---|
| TODO |
POST
| Client APIs |
|---|
| /mpd/client/connect |