mpris_server 미디어 플레이어 또는 장치에서 MPRIS 지원을 통합하기위한 어댑터를 제공합니다. 앱에서 MPRI를 지원함으로써 Linux 사용자는 이미 설치 한 미디어 컨트롤러에서 재생의 모든 측면을 제어 할 수 있습니다.
기존 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와 같은 데비안 유래 분포에서 apt 와 함께 python3-gi 설치하십시오. 아치에는 python-gobject 설치하고 싶을 것입니다.
MacOS에서 brew 통해 pygobject3 설치하십시오. MACOS의 mpris_server 테스트되지 않았지만 이론적으로 사용할 수 있습니다.
pip 사용하여 공급 업체의 패키지 저장소에 설치 후보가없는 경우 PyGObject>=3.34.0 설치하십시오.
pip3 install mpris_server
Repo를 복제하고 pip3 install -r requirements.txt 실행 한 다음 python3 setup.py install 실행하십시오.
adapters.MprisAdapter 를 구현하십시오 .mprisadapter 서브 클래스 adapters.MprisAdapter 및 각 방법을 구현하십시오.
서브 클래싱 후 인스턴스를 server.Server 의 인스턴스로 전달하십시오.
events.EventAdapter 구현합니다 .EventAdapter 서브 클래스 adapters.EventAdapter . 이 인터페이스에는 기본 구현이 양호하므로 앱이 호출되는 경우에만 메소드를 무시합니다.
메소드를 다시 구현하기로 선택한 경우 해당 인터페이스와 변경된 속성 List[str] 사용하여 emit_changes() 호출하십시오.
어댑터를 응용 프로그램과 통합하여 DBUS가 알아야 할 미디어 플레이어의 변경 사항을 방출하십시오. 예를 들어, 사용자가 미디어 플레이어를 일시 중지하는 경우 앱에서 EventAdapter.on_playpause() 를 호출하십시오. DBUS는 그렇지 않으면 변화에 대해 알지 못합니다.
server.Server 의 인스턴스를 작성하고 MprisAdapter 의 인스턴스를 전달하고 dbus를 통해 미디어 플레이어를 게시하려면 publish() 를 호출하십시오.
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 참조하십시오. 다른 라이센스와 함께이 프로젝트를 사용하려면 메시지를 보내주십시오.