Asynchronous MPD client library
Project description
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).
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 [1] (other than idle and noidle). Returns when the server’s reply arrives:
await executor.play(5) reply = await executor.status()
Idle request:
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:
Event.*SUBSYSTEM* (in uppercase) or ANY to match any subsystem.
Event.CONNECT - client is connected to server.
Event.IDLE - client is idle.
Returns the mask of events which actually occurred, or Event.TIMEOUT if timeout occurred.
Command list: executor.command_list(iterable).
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.