Получите подтверждение, что игрок MPRIS успешно перешел на следующий трек - PullRequest
0 голосов
/ 24 марта 2020

Я использую интерфейс Spotify MPRIS через библиотеку dbus python для перебора списка воспроизведения, получая при этом свойство autoRating каждой дорожки. Код ниже.

import dbus
import time

def parse_auto_ratings(playlist_length):
    wait_time_in_secs =0.3 
    bus = dbus.SessionBus()
    spotify_mpris_id = 'org.mpris.MediaPlayer2.spotify'
    player = bus.get_object(spotify_mpris_id, '/org/mpris/MediaPlayer2')
    for i in range(playlist_length):
        metadata = player.Get('org.mpris.MediaPlayer2.Player',
                              'Metadata',
                              dbus_interface='org.freedesktop.DBus.Properties')
        rating = metadata['xesam:autoRating']
        title = metadata['xesam:title']
        print(f'title: {title}, rating: {rating}')
        player.Next(dbus_interface='org.mpris.MediaPlayer2.Player')
        time.sleep(wait_time_in_secs)
    for i in range(playlist_length):
        metadata = player.Get('org.mpris.MediaPlayer2.Player',
                              'Metadata',
                              dbus_interface='org.freedesktop.DBus.Properties')
        rating = metadata['xesam:autoRating']
        title = metadata['xesam:title']
        print(f'title: {title}, rating: {rating}')
        player.Next(dbus_interface='org.mpris.MediaPlayer2.Player')
        time.sleep(wait_time_in_secs)

Я использую метод Next () интерфейса MediaPlayer2.Player для итерации, но если я не жду между вызовами Next (), я заканчиваю тем, что читаю свойства того же самого Песня несколько раз. Есть ли способ проверить с помощью проигрывателя MPRIS, успешно ли он перешел на следующую дорожку, так что я могу использовать это вместо ожидания некоторое время?

...