player-mpris-tail: improve tags

This commit is contained in:
Christian Dannie Storgaard 2018-11-27 08:58:05 +02:00 committed by x70b1
parent 6bf8c3d478
commit 31d15af87f

View File

@ -2,6 +2,7 @@
import sys
import dbus
import os
from operator import itemgetter
import argparse
import re
@ -214,6 +215,8 @@ class Player:
self.metadata['disc'] = _getProperty(self._metadata, 'xesam:discNumber', '')
self.metadata['date'] = re.sub(SAFE_TAG_REGEX, """\1\1""", _getProperty(self._metadata, 'xesam:contentCreated', ''))
self.metadata['year'] = re.sub(SAFE_TAG_REGEX, """\1\1""", self.metadata['date'][0:4])
self.metadata['url'] = _getProperty(self._metadata, 'xesam:url', '')
self.metadata['filename'] = os.path.basename(self.metadata['url'])
cover = _getProperty(self._metadata, 'xesam:artUrl', '')
if not len(cover):
cover = _getProperty(self._metadata, 'mpris:artUrl', '')
@ -252,6 +255,12 @@ class Player:
formatlen = match.group('formatlen')
text = match.group('text')
tag_found = False
reversed_tag = False
if tag.startswith('-'):
tag = tag[1:]
reversed_tag = True
if format is None:
tag_is_format_match = re.match(FORMAT_TAG_REGEX, tag)
if tag_is_format_match:
@ -270,6 +279,9 @@ class Player:
if tag_found is False and tag in metadata and len(metadata[tag]):
tag_found = True
if reversed_tag:
tag_found = not tag_found
if tag_found:
return text
else:
@ -277,7 +289,6 @@ class Player:
def printStatus(self):
if self.status in [ 'playing', 'paused' ]:
if self.metadata['title']:
metadata = { **self.metadata, 'icon': self.icon, 'icon-reversed': self.icon_reversed }
# replace metadata tags in text
text = re.sub(FORMAT_REGEX, lambda match: self._statusReplace(match, metadata), FORMAT_STRING)
@ -360,7 +371,7 @@ parser.add_argument('-b', '--blacklist', help="ignore a player by it's bus name.
action='append',
metavar="BUS_NAME",
default=[])
parser.add_argument('-f', '--format', default='{icon} {artist} - {title}')
parser.add_argument('-f', '--format', default='{icon} {:artist:{artist} - :}{:title:{title}:}{:-title:{filename}:}')
parser.add_argument('--truncate-text', default='')
parser.add_argument('--icon-playing', default='')
parser.add_argument('--icon-paused', default='')