允许通过beefweb插件控制Python中的Foobar2000和DeaDBeeF媒体播放器。

pyfoobeef的Python项目详细描述


允许通过beefweb插件API控制Foobar2000和DeaDBeeF媒体播放器。在

  • 异步和同步客户端
  • 带有回调的异步事件侦听器
  • 对于Python 3.6及更高版本
  • 麻省理工学院执照

安装

  1. 为您的媒体播放器安装并配置beefweb插件。在

  2. 运行:

    pip install pyfoobeef
    

示例

同步客户端:

^{pr2}$

异步客户机采用非常类似的格式:

importpyfoobeefimportasyncioasyncdefexample():player=pyfoobeef.AsyncClient("localhost",8880)# Add a new playlist.new_playlist=awaitplayer.add_playlist(title="My New Playlist")awaitplayer.set_current_playlist(new_playlist)# Add items to the playlist.  Note that paths including drive letters# are case sensitive even on Windows due to limitations of the beefweb# plugin (so r"c:\Music" would not work here).awaitplayer.add_playlist_items(new_playlist,items=[r"C:\Music"])# sort items by lengthawaitplayer.sort_playlist_items(new_playlist,by="%length_seconds%")# Get information about the first 10 items in a playlist.items=awaitplayer.get_playlist_items(new_playlist,column_map=["%artist%","%title%","%length%"],offset=0,count=10,)foriteminitems:print(item)# Play a specific item.awaitplayer.play_specific(new_playlist,4)asyncio.run(example())

当接收到某些事件时,异步事件侦听器可以自动执行回调,或者可以根据EventListener对象的属性确定媒体播放器的状态:

importpyfoobeefimportasynciodefprint_active_item(state):print("From player state callback.  Active item is:")print(state.active_item)defprint_playlists(playlists):print("From playlists callback.  Current playlists:")forplaylistinplaylists:print(playlist)asyncdefexample():listener=pyfoobeef.EventListener(base_url="localhost",port=8880,active_item_column_map={"%artist%":"artist","%title%":"title","%length%":"length",},)# Add callbacks for player events.listener.add_callback("player_state",print_active_item)listener.add_callback("playlists",print_playlists)# Start listening for events from the player.awaitlistener.connect(reconnect_time=1)awaitasyncio.sleep(10)# The last received information about the player state and playlists# can be accessed from the listener object itself.print("From the last player state object saved to listener.""  Active item is:")print(listener.player_state.active_item)print("Estimated playback position: ",listener.player_state.estimated_position_mmss())forplaylistinlistener.playlists:print(playlist)awaitasyncio.sleep(10)# The listener should always be disconnected when done.awaitlistener.disconnect()asyncio.run(example())

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Cassandra DB的javascript查询结果   java定时器任务调度   java在TLS上实现LDAP   为什么在浏览器中滚动会使java小程序闪烁?   未使用轮询器和serviceactivator提取java pubsub消息   java风暴多线程问题   java计算平均成绩   java将字符串添加到另一个类的数组列表中   文件Java路径如何转换为例如InputStream   java更改JComboBox的字体颜色   java inthttp:具有可轮询请求通道的inboundgateway   使用继承在Java中运行swing Base和扩展windows   java ivysettings。xml:添加本地maven路径   java如何将参数自定义视图传递给activity类   java延迟加载无法在Hibernate中使用一对一映射   当文件以“file:/”开头时,Java无法识别该文件   需要java正则表达式帮助,使用反斜杠   片段中的java GWT参数