33 lines
819 B
Ruby
33 lines
819 B
Ruby
|
|
#!/usr/bin/env ruby
|
||
|
|
|
||
|
|
require "dbus"
|
||
|
|
|
||
|
|
def seconds_to_ms(sec)
|
||
|
|
sec /= 1000000
|
||
|
|
"%02d:%02d" % [sec / 60, sec % 60]
|
||
|
|
end
|
||
|
|
|
||
|
|
service = DBus.session_bus["org.mpris.MediaPlayer2.strawberry"]
|
||
|
|
unless service.exists?
|
||
|
|
puts 'Strawberry not running'
|
||
|
|
exit 1
|
||
|
|
end
|
||
|
|
|
||
|
|
object = service["/org/mpris/MediaPlayer2"]
|
||
|
|
interface = object["org.mpris.MediaPlayer2.Player"]
|
||
|
|
|
||
|
|
metadata = interface["Metadata"]
|
||
|
|
|
||
|
|
if metadata.empty?
|
||
|
|
puts 'No song in playlist'
|
||
|
|
exit 2
|
||
|
|
end
|
||
|
|
|
||
|
|
position = interface["Position"]
|
||
|
|
playback_status = interface["PlaybackStatus"]
|
||
|
|
|
||
|
|
|
||
|
|
printf "(#{playback_status}) " if playback_status != 'Playing'
|
||
|
|
puts "#{metadata['xesam:albumArtist'].join(', ')} - #{metadata['xesam:album']} - #{metadata['xesam:title']} " \
|
||
|
|
"(#{metadata['xesam:trackNumber']}) [#{seconds_to_ms(position)} / #{seconds_to_ms(metadata['mpris:length'])}]"
|