mpris_server fournit des adaptateurs pour intégrer le support MPRIS dans votre lecteur ou l'appareil multimédia. En prenant en charge les MPR dans votre application, vous autorisez les utilisateurs de Linux à contrôler tous les aspects de la lecture à partir des contrôleurs multimédias qu'ils ont déjà installés.
Alors que les bibliothèques MPRIS existantes pour Python implémentent les clients pour les applications avec support MPRIS existant, mpris_server est une bibliothèque utilisée pour implémenter la prise en charge de MPRIS dans des applications qui ne l'ont pas déjà. Si vous souhaitez donner à votre lecteur multimédia une interface MPRIS, alors mpris_server vous convient.
Consultez cast_control pour une application qui utilise mpris_server .
mpris_server est une fourche de Mopidy-MPRIS qui a été étendue et transformée dans une bibliothèque à usage général.
Implémente les éléments suivants de la spécification MPRIS:
La bibliothèque fournit également un gestionnaire d'événements qui émet org.freedesktop.DBus.Properties.PropertiesChanged en réponse aux changements dans votre lecteur multimédia. Cela permet des mises à jour en temps réel de votre lecteur multimédia vers D-BUS.
project.dependencies dans pyproject.toml Sur les distributions dérivées de Debian comme Ubuntu, installez python3-gi avec apt . Sur Arch, vous voudrez installer python-gobject .
Sur MacOS, installez pygobject3 via brew . Notez que mpris_server sur macOS n'a pas été testé, mais est théoriquement possible d'utiliser.
Utilisez pip pour installer PyGObject>=3.34.0 s'il n'y a pas de candidats d'installation disponibles dans les référentiels de package de votre fournisseur.
pip3 install mpris_server
Clone the Repo, exécutez pip3 install -r requirements.txt , suivi de python3 setup.py install .
adapters.MprisAdapter Sous-classe adapters.MprisAdapter et implémentez chaque méthode.
Après la sous-classe, passez une instance à une instance de server.Server .
events.EventAdapter adapters.EventAdapter de sous-classe.EventAdapter. Cette interface a une bonne implémentation par défaut, ne remplace ses méthodes que si votre application le demande.
Si vous choisissez de réimplémenter ses méthodes, appelez emit_changes() avec l'interface correspondante et une List[str] des propriétés qui ont changé.
Intégrez l'adaptateur à votre application pour émettre des modifications dans votre lecteur multimédia que DBU doit connaître. Par exemple, si l'utilisateur fait une pause avec le lecteur multimédia, assurez-vous d'appeler EventAdapter.on_playpause() dans l'application. DBU ne connaît pas le changement autrement.
Créez une instance de server.Server , passez-le une instance de votre MprisAdapter et appelez publish() pour publier votre lecteur multimédia via DBUS.
mpris = Server ( 'MyMediaPlayer' , adapter = my_adapter )
mpris . publish () Appelez loop() pour entrer la boucle d'événement DBUS ou entrez la boucle d'événement DBUS ailleurs dans votre code.
mpris . loop () Ou:
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 ()Vous voulez soutenir ce projet et d'autres projets open source comme celui-ci?
mpris_server est libéré sous l'AGPLV3, voir LICENSE . Envoyez-moi un message si vous souhaitez utiliser ce projet avec une licence différente.