From 073ddf6285e488b64c8318202b2c630eaa4476a3 Mon Sep 17 00:00:00 2001 From: Kubat <mael.martin31@gmail.com> Date: Fri, 29 Jan 2021 11:14:09 +0100 Subject: [PATCH] Update README with MPD compatibility list --- README.md | 80 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/README.md b/README.md index f23d6474..cb7059e4 100644 --- a/README.md +++ b/README.md @@ -171,3 +171,83 @@ Please, refer to the [CONTRIBUTING](CONTRIBUTING.md) file. Lektor is almost MPD compatible, at least it uses the same protocol, which can be gotten [here](https://www.musicpd.org/doc/html/protocol.html#). The full support for MPD clients (like mpc and ncmpc) is still WIP. + +### Command compatibility table + +For the compatibility column, the possible values are the following: + +- `-`: has a poor compatibility, doesn't work as MPD intended it +- `~`: basic compatibility, some arguments types / number may change +- `+`: is compatible +- `CHECK`: check for compatibility status +- `FIXME`: was intended to work as in MPD but is not, fix it +- `TODO`: marked as 'to be implemented', check the next releases if it is implemented +- nothing: has not been implemented and is not a priority + +| MPD command | lektord command | compatibility | compatibility note | +| --------------------------------- | ------------------------- | :-----------: | ----------------------------------------------- | +| `clearerror` | | | not implemented | +| `currentsong` | `currentsong` | ~ | use the lektord tags, not MPD once | +| `idle [subsistem]` | `idle [subsistem]` | + | | +| `status` | `status` | ~ | slight differencies in the duration and time, not working with mpc | +| `stats` | `stats` | ~ | don't send all the stats, only `db_update` | +| `consume {state}` | `consume {state}` | + | | +| `crossfade {seconds}` | | | not implemented | +| `mixrampdb {dB}` | `mixrampdb {dB}` | | not implemented | +| `mixrampdelay {seconds}` | | | not implemented | +| `random {state}` | `random {state}` | + | | +| `repeat {state}` | `repeat {state}` | + | | +| `setvol {vol}` | `setvol {vol}` | + | won't display the correct volume, mpv properties flush issue... | +| `getvol` | `getvol` | + | will display the correct value after the end of the kara | +| `single {state}` | `single {state}` | + | | +| `replay_gain_mode {mode}` | | | not implemented | +| `replay_gain_status` | | | not implemented | +| `next` | `next` | + | | +| `pause {state}` | `pause {state}` | CHECK | check compat state | +| `play [songpos]` | `play [songpos]` | + | if no `songpos` passed, defaults to `0` | +| `playid [songid]` | `playid {songid}` | + | get the first found `songid` in the queue | +| `previous` | `previous` | + | | +| `seek {songpos} {time}` | | | not implemented | +| `seekid {songid} {time}` | | | not implemented | +| `seekcur {time}` | `seekcur {time}` | | not implemented | +| `stop` | `stop` | + | | +| `add {uri}` | `add {uri}` | + | | +| `addid {id} [pos]` | `addid {id...}` | ~ | can add multiple songs, but no position support | +| `clear` | `clear` | + | | +| `delete [{POS}|{start:end}]` | | TODO | not implemented | +| `deleteid {songid}` | `deleteid {songid}` | + | delete all kara with that id, skip the current kara if needed | +| `move [{from}|{start:end}] {to}` | | TODO | not implemented | +| `moveid {from} {to}` | `moveid {from} {to}` | ~ | `to` is always an absolute position | +| `playlist` | `playlist` | + | | +| `playlistfind {tag} {needle}` | `playlistfind {uri}` | ~ | uses lektord URIs | +| `playlistid {songid}` | | TODO | not implemented | +| `playlistinfo [[songpos]|[start:end]]` | `playlistinfo` | - | is an alias to `playlist` | +| `playlistsearch {taf} {needle}` | `playlistsearch {uri}` | ~ | uses lektord URIs | +| `plchanges {version} [start:end]` | | | not implemented | +| `plchangesposid {version} [start:end]` | | | not implemented | +| `prio {prio} {start:end}` | | | not implemented | +| `prioid {prio} {id...}` | | | not implemented | +| `rangeid {id} {start:end}` | | | not implemented | +| `shuffle [start:end]` | `shuffle` | ~ | shuffles all the queue | +| `swap {song1} {song2}` | | TODO | not implemented | +| `swap {songid1} {songid2}` | | | not implemented | +| `addtagid {songid} {tag} {val}` | | | not implemented | +| `cleartagid {songid} [tag]` | | | not implemented | +| `listplaylist {name}` | `listplaylist {name}` | + | | +| `listplaylistinfo {name}` | `listplaylistinfo {name} {uri}` | - | do a search in the playlist | +| `listplaylists` | `listplaylists` | + | | +| `load {name} [start:end]` | | | not implemented, use `add {uri}` to do that | +| `playlistadd {name} {uri}` | `playlistadd {name} {uri}` | ~ | uses lektord URIs | +| `playlistclear {name}` | `playlistclear {name}` | + | | +| `playlistdelete {name} {songpos}` | `playlistdelete {name} [songid]` | ~ | delete all the playlist if `songpos` is not spesified, uses kara ids, not pos | +| `playlistmove {name} {from} {to}` | | | not implemented | +| `rename {name} {newname}` | `rename {name} {newname}` | ~ | will fail if the `newplaylist` already exists | +| `rm {name}` | `rm {name}` | + | | +| `save {name}` | `save {name} {destdb}` | - | export a part of the db into as sqlite3 db | +| `albumart {uri} {offset}` | | | not implemted | +| `count {filt} [group {grptype}]` | | | not implemted | +| `getfingerprint {uri}` | | | not implemted | +| `find {filt} [sort {type}] [window {START:END}]` | `find {uri}` | - | do a simple search in the db with lektord's URIs | +| `findadd {filt} [sort {type}] [window {start:end}]` | `findadd {uri}` | - | same remarks as `find` | +| `list {type} {filt} [group {grptype}]` | | | not implemented | +| `listall [uri]` | | | not implemented | -- GitLab