mpris_server 、メディアプレーヤーまたはデバイスにMPRIサポートを統合するためのアダプターを提供します。アプリでMPRIをサポートすることにより、Linuxユーザーがすでにインストールしているメディアコントローラーからの再生のすべての側面を制御できるようになります。
Python用の既存のMPRISライブラリは、既存の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テストされていませんが、理論的には使用できます。
ベンダーのパッケージリポジトリに利用可能なインストール候補がない場合はPyGObject>=3.34.0をインストールするためにpipを使用してください。
pip3 install mpris_server
リポジトリのクローン、 pip3 install -r requirements.txtを実行し、その後python3 setup.py installを実行します。
adapters.MprisAdapterを実装しますSubclass adapters.MprisAdapterと各メソッドを実装します。
サブクラス化後、インスタンスをserver.Serverのインスタンスに渡します。
events.EventAdapterを実装しますサブクラスadapters.EventAdapter 。EventAdapter。このインターフェイスには優れたデフォルトの実装があり、アプリが必要な場合にのみメソッドをオーバーライドします。
メソッドを再実装することを選択した場合は、対応するインターフェイスと変更されたプロパティのList[str]を使用してemit_changes()を呼び出します。
Adapterをアプリケーションと統合して、DBUSが知る必要があるメディアプレーヤーの変更を放出します。たとえば、ユーザーがメディアプレーヤーを一時停止する場合は、アプリでEventAdapter.on_playpause()に電話してください。 DBUSは変更については知りません。
server.Serverのインスタンスを作成し、 MprisAdapterのインスタンスを渡し、 publish()を呼び出してDBUを介してメディアプレーヤーを公開します。
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を参照してください。このプロジェクトを別のライセンスで使用したい場合は、私にメッセージを送ってください。