mpris_server ให้อะแดปเตอร์เพื่อรวมการสนับสนุน MPRIS ในเครื่องเล่นสื่อหรืออุปกรณ์ของคุณ ด้วยการสนับสนุน MPRIS ในแอพของคุณคุณจะอนุญาตให้ผู้ใช้ Linux ควบคุมการเล่นทุกด้านจากตัวควบคุมสื่อที่พวกเขาติดตั้งไว้แล้ว
ในขณะที่ไลบรารี MPRIS ที่มีอยู่สำหรับ Python ใช้ไคลเอนต์สำหรับแอพที่มีการสนับสนุน MPRIs ที่มีอยู่ mpris_server เป็นไลบรารีที่ใช้ในการใช้การสนับสนุน MPRIS ในแอพที่ไม่มีอยู่ หากคุณต้องการให้อินเทอร์เฟซ MPRIS ของเครื่องเล่นสื่อของคุณ mpris_server นั้นเหมาะกับคุณ
ตรวจสอบ cast_control สำหรับแอพที่ใช้ mpris_server
mpris_server เป็นส้อมของ mopidy-mpris ที่ขยายและกลายเป็นห้องสมุดวัตถุประสงค์ทั่วไป
ดำเนินการต่อไปนี้จากข้อกำหนด MPRIS:
ห้องสมุดยังมีตัวจัดการเหตุการณ์ที่ปล่อย org.freedesktop.DBus.Properties.PropertiesChanged เพื่อตอบสนองต่อการเปลี่ยนแปลงในเครื่องเล่นสื่อของคุณ สิ่งนี้ช่วยให้การอัปเดตแบบเรียลไทม์จากเครื่องเล่นสื่อของคุณเป็น D-BUS
project.dependencies ใน pyproject.toml ในการแจกแจงที่ได้จาก Debian เช่น Ubuntu ติดตั้ง python3-gi ด้วย apt บน Arch คุณจะต้องติดตั้ง python-gobject
บน macOS ให้ติดตั้ง pygobject3 ผ่าน brew โปรดทราบว่า mpris_server บน MacOS ยังไม่ได้รับการทดสอบ แต่เป็นไปได้ในทางทฤษฎีที่จะใช้
ใช้ pip เพื่อติดตั้ง PyGObject>=3.34.0 หากไม่มีผู้สมัครติดตั้งในที่เก็บแพ็คเกจของผู้ขายของคุณ
pip3 install mpris_server
โคลน repo, เรียกใช้ pip3 install -r requirements.txt ตามด้วย python3 setup.py install
adapters.MprisAdapter adapters.MprisAdapter subclass.mprisadapter และใช้แต่ละวิธี
หลังจาก subclassing ให้ส่งอินสแตนซ์ไปยังอินสแตนซ์ของ server.Server
events.EventAdapter adapters.EventAdapter subclass.eventadapter อินเทอร์เฟซนี้มีการใช้งานเริ่มต้นที่ดีเพียงแทนที่วิธีการของมันหากแอปของคุณเรียกใช้
หากคุณเลือกที่จะใช้วิธีการใหม่ให้โทรหา emit_changes() ด้วยอินเทอร์เฟซที่เกี่ยวข้องและ List[str] ของคุณสมบัติที่เปลี่ยนแปลง
รวมอะแดปเตอร์เข้ากับแอปพลิเคชันของคุณเพื่อปล่อยการเปลี่ยนแปลงในเครื่องเล่นสื่อของคุณที่ DBUS จำเป็นต้องรู้ ตัวอย่างเช่นหากผู้ใช้หยุดเครื่องเล่นสื่อให้แน่ใจว่าได้เรียก EventAdapter.on_playpause() ในแอพ DBUS จะไม่ทราบเกี่ยวกับการเปลี่ยนแปลงเป็นอย่างอื่น
สร้างอินสแตนซ์ของ server.Server ส่งผ่านอินสแตนซ์ของ MprisAdapter ของคุณและโทร publish() เพื่อเผยแพร่เครื่องเล่นสื่อของคุณผ่าน DBUS
mpris = Server ( 'MyMediaPlayer' , adapter = my_adapter )
mpris . publish () CALL loop() เพื่อเข้าสู่ลูปเหตุการณ์ DBUS หรือป้อน Event Event Loop ที่อื่นในรหัสของคุณ
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 ส่งข้อความถึงฉันหากคุณต้องการใช้โครงการนี้ด้วยใบอนุญาตอื่น