异步MPD客户端库
ampd的Python项目详细描述
使用python asyncio与音乐播放器后台程序服务器进行异步通信。
连接由客户端对象建立。 请求(mpd命令)在异步协同路由中执行,这里称为“任务”。 请求由执行器对象生成。 每个客户机都有一个根执行器,可以构造子执行器(用于对相关任务进行分组)。
任务
ampd任务本质上是一个异步协程。 @taskdecorator通过asyncio使协程立即执行。确保未来。 此外,它还将其包装起来,因此取消和断开连接的例外情况被视为正常终止:
@task async def task_example(): ... reply = await executor.request1(a, b) ... reply = await executor.request2() ...
请求可以是:
mpd命令[1](而不是idle和noidle)。 当服务器的回复到达时返回:
await executor.play(5) reply = await executor.status()
空闲请求:
reply = await executor.idle(event_mask, timeout=None)
这模拟了mpd的idle命令,并进行了一些改进。 超时以秒为单位。 可能的事件标志是:
- Event.*SUBSYSTEM*(大写)或ANY以匹配任何子系统。
- Event.CONNECT-客户端已连接到服务器。
- Event.IDLE-客户端空闲。
返回实际发生的事件的掩码,如果发生超时,则返回Event.TIMEOUT。
命令列表:executor.command_list(iterable)。
[1] | For MPD commands and subsystems see http://www.musicpd.org/doc/protocol/command_reference.html |