Polybar: Add spotify status script, adjust default bar size
Thanks Jvanrhijn for the script
This commit is contained in:
67
.config/polybar/scripts/spotify.py
Executable file
67
.config/polybar/scripts/spotify.py
Executable file
@@ -0,0 +1,67 @@
|
||||
#!/bin/python
|
||||
|
||||
import sys
|
||||
import dbus
|
||||
import argparse
|
||||
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument(
|
||||
'-t',
|
||||
'--trunclen',
|
||||
type=int,
|
||||
metavar='trunclen'
|
||||
)
|
||||
parser.add_argument(
|
||||
'-f',
|
||||
'--format',
|
||||
type=str,
|
||||
metavar='custom format',
|
||||
dest='custom_format'
|
||||
)
|
||||
args = parser.parse_args()
|
||||
|
||||
# Default parameters
|
||||
output = '{artist}: {song}'
|
||||
trunclen = 25
|
||||
|
||||
# parameters can be overwritten by args
|
||||
if args.trunclen is not None:
|
||||
trunclen = args.trunclen
|
||||
if args.custom_format is not None:
|
||||
output = args.custom_format
|
||||
|
||||
try:
|
||||
session_bus = dbus.SessionBus()
|
||||
spotify_bus = session_bus.get_object(
|
||||
'org.mpris.MediaPlayer2.spotify',
|
||||
'/org/mpris/MediaPlayer2'
|
||||
)
|
||||
|
||||
spotify_properties = dbus.Interface(
|
||||
spotify_bus,
|
||||
'org.freedesktop.DBus.Properties'
|
||||
)
|
||||
|
||||
metadata = spotify_properties.Get('org.mpris.MediaPlayer2.Player', 'Metadata')
|
||||
|
||||
artist = metadata['xesam:artist'][0]
|
||||
song = metadata['xesam:title']
|
||||
|
||||
if len(song) > trunclen:
|
||||
song = song[0:trunclen]
|
||||
song += '...'
|
||||
if ('(' in song) and (')' not in song):
|
||||
song += ')'
|
||||
|
||||
# Python3 uses UTF-8 by default.
|
||||
if sys.version_info.major == 3:
|
||||
print(output.format(artist=artist, song=song))
|
||||
else:
|
||||
print(output.format(artist=artist, song=song).encode('UTF-8'))
|
||||
except Exception as e:
|
||||
if isinstance(e, dbus.exceptions.DBusException):
|
||||
print('')
|
||||
else:
|
||||
print(e)
|
||||
|
Reference in New Issue
Block a user