mpris_server fornece adaptadores para integrar o suporte ao MPRIS no seu media player ou dispositivo. Ao suportar o MPRIS em seu aplicativo, você permitirá que os usuários do Linux controlem todos os aspectos da reprodução dos controladores de mídia que eles já instalaram.
Enquanto as bibliotecas MPRIS existentes para o Python implementam clientes para aplicativos com suporte ao MPRIS existente, mpris_server é uma biblioteca usada para implementar o suporte ao MPRIS em aplicativos que ainda não o possuem. Se você deseja dar ao seu mídia uma interface MPRIS, mpris_server é adequado para você.
Confira cast_control para um aplicativo que usa mpris_server .
mpris_server é um garfo de mopidy-mpris que foi estendido e transformado em uma biblioteca de uso geral.
Implementa o seguinte da especificação MPRIS:
A biblioteca também fornece um manipulador de eventos que emite org.freedesktop.DBus.Properties.PropertiesChanged em resposta a mudanças no seu mídia. Isso permite atualizações em tempo real do seu media player para o D-Bus.
project.dependencies em pyproject.toml Em distribuições derivadas do Debian como o Ubuntu, instale python3-gi com apt . No Arch, você deseja instalar python-gobject .
No macOS, instale pygobject3 via brew . Observe que mpris_server no macOS não foi testado, mas teoricamente é possível usar.
Use pip para instalar PyGObject>=3.34.0 se não houver candidatos a instalação disponíveis nos repositórios de pacotes do seu fornecedor.
pip3 install mpris_server
Clone o repo, execute pip3 install -r requirements.txt , seguido pelo python3 setup.py install .
adapters.MprisAdapter adapters.MprisAdapter da subclasse.mprisAdapter e implemente cada método.
Após a subclasse, passe uma instância para uma instância do server.Server .
events.EventAdapter adapters.EventAdapter de subclasse.EventAdapter. Essa interface possui uma boa implementação padrão, substituir apenas seus métodos se o seu aplicativo exigir.
Se você optar por reimplementar seus métodos, ligue para emit_changes() com a interface correspondente e uma List[str] de propriedades que foram alteradas.
Integre o adaptador ao seu aplicativo para emitir alterações no seu mídia que o DBUS precisa conhecer. Por exemplo, se o usuário faz uma pausa no mídia, ligue para EventAdapter.on_playpause() no aplicativo. Os DBUs não saberão sobre a mudança de outra forma.
Crie uma instância do server.Server , passe uma instância do seu MprisAdapter e ligue para publish() para publicar seu mídia via DBUS.
mpris = Server ( 'MyMediaPlayer' , adapter = my_adapter )
mpris . publish () Ligue para loop() para inserir o loop de eventos do DBUS ou insira o loop de eventos do DBUS em outro lugar do seu código.
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 ()Deseja apoiar este projeto e outros projetos de código aberto como esse?
mpris_server é liberado sob o AGPLV3, consulte LICENSE . Envie -me uma mensagem se você quiser usar este projeto com uma licença diferente.