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 。如果您想使用其他許可證使用此項目,請給我發消息。