text: #!/bin/python
  
  # Copied from: https://github.com/Jvanrhijn/polybar-spotify
  
  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'
  )
  parser.add_argument(
      '-p',
      '--playpause',
      type=str,
      metavar='play-pause indicator',
      dest='play_pause'
  )
  parser.add_argument(
      '--font',
      type=str,
      metavar='the index of the font to use for the main label',
      dest='font'
  )
  parser.add_argument(
      '--playpause-font',
      type=str,
      metavar='the index of the font to use to display the playpause indicator',
      dest='play_pause_font'
  )
  
  
  args = parser.parse_args()
  
  def fix_string(string):
      # corrects encoding for the python version used
      if sys.version_info.major == 3:
          return string
      else:
          return string.encode('utf-8')
  
  # Default parameters
  output = fix_string(u'{play_pause} {artist}: {song}')
  trunclen = 25
  play_pause = fix_string(u'\u25B6,\u23F8') # first character is play, second is paused
  
  label_with_font = '%{{T{font}}}{label}%{{T-}}'
  font = args.font
  play_pause_font = args.play_pause_font
  
  # 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
  if args.play_pause is not None:
      play_pause = args.play_pause
  
  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')
      status = spotify_properties.Get('org.mpris.MediaPlayer2.Player', 'PlaybackStatus')
  
      # Handle play/pause label
  
      play_pause = play_pause.split(',')
  
      if status == 'Playing':
          play_pause = play_pause[0]
      elif status == 'Paused':
          play_pause = play_pause[1]
      else:
          play_pause = str()
  
      if play_pause_font:
          play_pause = label_with_font.format(font=play_pause_font, label=play_pause)
  
      # Handle main label
  
      artist = fix_string(metadata['xesam:artist'][0]) if metadata['xesam:artist'] else ''
      song = fix_string(metadata['xesam:title']) if metadata['xesam:title'] else ''
  
      if not artist and not song:
          print('')
      else:
          if len(song) > trunclen:
              song = song[0:trunclen]
              song += '...'
              if ('(' in song) and (')' not in song):
                  song += ')'
  
          if font:
              artist = label_with_font.format(font=font, label=artist)
              song = label_with_font.format(font=font, label=song)
  
          print(output.format(artist=artist, song=song, play_pause=play_pause))
  
  except Exception as e:
      if isinstance(e, dbus.exceptions.DBusException):
          print('')
      else:
          print(e)
  