mpris_server提供了将MPRIS支持集成在您的媒体播放器或设备中的适配器。通过支持您的应用程序中的MPRI,您将允许Linux用户控制他们已经安装的媒体控制器的所有播放方面。
尽管现有MPRIS支持的应用程序为Python实施客户端的现有MPRIS库,但mpris_server是一个用于在尚未拥有的应用程序中实现MPRIS支持的库。如果您想为您的媒体播放器一个MPRIS接口,那么mpris_server适合您。
查看使用mpris_server的cast_control程序。
mpris_server是一大堆Mopidy-Mpris,已扩展并将其制成通用库。
从MPRIS规范中实现以下内容:
该库还提供了一个事件处理程序,该事件处理程序发出org.freedesktop.DBus.Properties.PropertiesChanged响应媒体播放器的变化。这允许从媒体播放器到D-BUS进行实时更新。
pyproject.toml中的project.dependencies在像Ubuntu这样的Debian衍生的发行版中,请与apt安装python3-gi 。在Arch上,您需要安装python-gobject 。
在MacOS上,通过brew安装pygobject3 。请注意,MacOS上的mpris_server尚未进行测试,但在理论上可以使用。
如果供应商的软件包存储库中没有安装候选,请使用pip安装PyGObject>=3.34.0 。
pip3 install mpris_server
克隆回购,运行pip3 install -r requirements.txt ,然后是python3 setup.py install 。
adapters.MprisAdapter子类adapters.MprisAdapter并实现每种方法。
子类结束后,将实例传递到server.Server的实例。
events.EventAdapter子类adapters.EventAdapter 。该界面具有良好的默认实现,只有在您的应用程序呼吁时才覆盖其方法。
如果选择重新实现其方法,请使用相应的接口和更改的属性List[str]调用emit_changes() 。
将适配器与您的应用程序集成在一起,以在DBU需要了解的媒体播放器中发出更改。例如,如果用户暂停媒体播放器,请确保在应用程序中调用EventAdapter.on_playpause() 。否则,dbus不会知道这一变化。
创建一个server.Server的实例,将其传递给MprisAdapter的实例,然后调用publish()通过DBUS发布媒体播放器。
mpris = Server ( 'MyMediaPlayer' , adapter = my_adapter )
mpris . publish () 调用loop()输入DBUS事件循环,或在代码其他位置输入DBUS事件循环。
mpris . loop () 或者:
from gi . repository import GLib
loop = GLib . MainLoop ()
loop . run () from mpris_server . adapters import MprisAdapter
from mpris_server . events import EventAdapter
from mpris_server . server import Server
from mpris_server import Metadata
from my_app import app # custom app you want to integrate
class MyAppAdapter ( MprisAdapter ):
# Make sure to implement all methods on MprisAdapter, not just metadata()
def metadata ( self ) -> Metadata :
...
# and so on
class MyAppEventHandler ( EventAdapter ):
# EventAdapter has good default implementations for its methods.
# Only override the default methods if it suits your app.
def on_app_event ( self , event : str ):
# trigger DBus updates based on events in your app
if event == 'pause' :
self . on_playpause ()
...
# and so on
# create mpris adapter and initialize mpris server
my_adapter = MyAppAdapter ()
mpris = Server ( 'MyApp' , adapter = my_adapter )
# initialize app integration with mpris
event_handler = MyAppEventHandler ( root = mpris . root , player = mpris . player )
app . register_event_handler ( event_handler )
# publish and serve
mpris . loop ()是否想支持这个项目和其他类似的开源项目?
mpris_server在AGPLV3下发布,请参阅LICENSE 。如果您想使用其他许可证使用此项目,请给我发消息。