Asynchronous MPD client library
Uses python asyncio for asynchronous communication with a Music Player Daemon server.
Connection is established by a client object. Requests (MPD commands) are executed in asyncio coroutines, referred to here as “tasks”. Requests are generated by an executor object. Each client has a root executor, and sub-executors can be constructed (for grouping related tasks).
An AMPD task is, essentially, an asyncio coroutine. The @task decorator makes the coroutine execute immediately via asyncio.ensure_future. In addition, it wraps it so cancellation and disconnect exceptions are considered normal termination:
@task async def task_example(): ... reply = await executor.request1(a, b) ... reply = await executor.request2() ...
The request can be:
An MPD command  (other than idle and noidle). Returns when the server’s reply arrives:
await executor.play(5) reply = await executor.status()
reply = await executor.idle(event_mask, timeout=None)
This emulates MPD’s idle command, with some improvements. The timeout is given in seconds. Possible event flags are:
Returns the mask of events which actually occurred, or Event.TIMEOUT if timeout occurred.
Command list: executor.command_list(iterable).
|||For MPD commands and subsystems see http://www.musicpd.org/doc/protocol/command_reference.html|