mpris_server bietet Adaptern die Integration von MPRIS -Support in Ihren Media -Player oder -Gerät. Durch die Unterstützung von MPRIS in Ihrer App ermöglichen Sie Linux -Benutzern, alle Aspekte der Wiedergabe von den bereits installierten Mediencontrollern zu steuern.
Während vorhandene MPRIS -Bibliotheken für Python Clients für Apps mit vorhandenem MPRIS -Support implementieren, ist mpris_server eine Bibliothek, mit der MPRIS -Unterstützung in Apps implementiert wird, die es noch nicht haben. Wenn Sie Ihrem Media Player eine MPRIS -Schnittstelle geben möchten, ist mpris_server für Sie geeignet.
Schauen Sie sich cast_control für eine App an, die mpris_server verwendet.
mpris_server ist eine Gabel von Mopidy-Mpris, die erweitert und in eine Allzweckbibliothek verarbeitet wurde.
Implementiert das Folgende aus der MPRIS -Spezifikation:
Die Bibliothek bietet außerdem einen Event -Handler, der org.freedesktop.DBus.Properties.PropertiesChanged als Reaktion auf Änderungen in Ihrem Medienspieler ausgibt. Dies ermöglicht Echtzeit-Updates von Ihrem Media-Player bis zum D-Bus.
project.dependencies in pyproject.toml Installieren Sie bei Debian-abgeleiteten Verteilungen wie Ubuntu python3-gi mit apt . Auf dem Arch möchten Sie python-gobject installieren.
Installieren Sie pygobject3 auf MacOS über brew . Beachten Sie, dass mpris_server auf macOS nicht getestet wurde, aber theoretisch verwendet werden kann.
Verwenden Sie pip , um PyGObject>=3.34.0 zu installieren, wenn keine Installationskandidaten in den Paket -Repositories Ihres Anbieters verfügbar sind.
pip3 install mpris_server
Klonen Sie das Repo, rennen Sie pip3 install -r requirements.txt , gefolgt von python3 setup.py install .
adapters.MprisAdapter Subklass adapters.MprisAdapter und implementieren Sie jede Methode.
Übergeben Sie nach der Unterklasse eine Instanz an eine Instanz von server.Server .
events.EventAdapter Subklass adapters.EventAdapter . Diese Schnittstelle verfügt über eine gute Standardimplementierung. Überschreiben Sie nur ihre Methoden, wenn Ihre App sie auffordert.
Wenn Sie seine Methoden erneut implementieren möchten, rufen Sie emit_changes() mit der entsprechenden Schnittstelle und einer List[str] von Eigenschaften auf, die geändert wurden.
Integrieren Sie den Adapter in Ihre Anwendung, um Änderungen in Ihrem Mediplayer auszugeben, über die DBUs wissen müssen. Wenn der Benutzer beispielsweise den Media Player innehält, rufen Sie EventAdapter.on_playpause() in der App auf. DBUS wird sonst nichts über die Änderung wissen.
Erstellen Sie eine Instanz von server.Server , geben Sie es eine Instanz Ihres MprisAdapter weiter und rufen Sie publish() an, um Ihren Media -Player über DBUs zu veröffentlichen.
mpris = Server ( 'MyMediaPlayer' , adapter = my_adapter )
mpris . publish () Rufen Sie loop() an, um die DBUS -Ereignisschleife einzugeben oder die DBUS -Ereignisschleife an anderer Stelle in Ihrem Code einzugeben.
mpris . loop () Oder:
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 ()Möchten Sie dieses Projekt und andere Open-Source-Projekte wie IT unterstützen?
mpris_server wird unter der AGPLV3 veröffentlicht, siehe LICENSE . Nachricht an mich, wenn Sie dieses Projekt mit einer anderen Lizenz verwenden möchten.