Я использую интерфейс 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, успешно ли он перешел на следующую дорожку, так что я могу использовать это вместо ожидания некоторое время?