player-mpris-tail: improve tags
This commit is contained in:
parent
6bf8c3d478
commit
31d15af87f
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
import sys
|
import sys
|
||||||
import dbus
|
import dbus
|
||||||
|
import os
|
||||||
from operator import itemgetter
|
from operator import itemgetter
|
||||||
import argparse
|
import argparse
|
||||||
import re
|
import re
|
||||||
@ -210,10 +211,12 @@ class Player:
|
|||||||
self.metadata['length'] = int(length)
|
self.metadata['length'] = int(length)
|
||||||
else:
|
else:
|
||||||
self.metadata['length'] = 0
|
self.metadata['length'] = 0
|
||||||
self.metadata['genre'] = _getProperty(self._metadata, 'xesam:genre', '')
|
self.metadata['genre'] = _getProperty(self._metadata, 'xesam:genre', '')
|
||||||
self.metadata['disc'] = _getProperty(self._metadata, 'xesam:discNumber', '')
|
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['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['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', '')
|
cover = _getProperty(self._metadata, 'xesam:artUrl', '')
|
||||||
if not len(cover):
|
if not len(cover):
|
||||||
cover = _getProperty(self._metadata, 'mpris:artUrl', '')
|
cover = _getProperty(self._metadata, 'mpris:artUrl', '')
|
||||||
@ -252,6 +255,12 @@ class Player:
|
|||||||
formatlen = match.group('formatlen')
|
formatlen = match.group('formatlen')
|
||||||
text = match.group('text')
|
text = match.group('text')
|
||||||
tag_found = False
|
tag_found = False
|
||||||
|
reversed_tag = False
|
||||||
|
|
||||||
|
if tag.startswith('-'):
|
||||||
|
tag = tag[1:]
|
||||||
|
reversed_tag = True
|
||||||
|
|
||||||
if format is None:
|
if format is None:
|
||||||
tag_is_format_match = re.match(FORMAT_TAG_REGEX, tag)
|
tag_is_format_match = re.match(FORMAT_TAG_REGEX, tag)
|
||||||
if tag_is_format_match:
|
if tag_is_format_match:
|
||||||
@ -270,6 +279,9 @@ class Player:
|
|||||||
if tag_found is False and tag in metadata and len(metadata[tag]):
|
if tag_found is False and tag in metadata and len(metadata[tag]):
|
||||||
tag_found = True
|
tag_found = True
|
||||||
|
|
||||||
|
if reversed_tag:
|
||||||
|
tag_found = not tag_found
|
||||||
|
|
||||||
if tag_found:
|
if tag_found:
|
||||||
return text
|
return text
|
||||||
else:
|
else:
|
||||||
@ -277,16 +289,15 @@ class Player:
|
|||||||
|
|
||||||
def printStatus(self):
|
def printStatus(self):
|
||||||
if self.status in [ 'playing', 'paused' ]:
|
if self.status in [ 'playing', 'paused' ]:
|
||||||
if self.metadata['title']:
|
metadata = { **self.metadata, 'icon': self.icon, 'icon-reversed': self.icon_reversed }
|
||||||
metadata = { **self.metadata, 'icon': self.icon, 'icon-reversed': self.icon_reversed }
|
# replace metadata tags in text
|
||||||
# replace metadata tags in text
|
text = re.sub(FORMAT_REGEX, lambda match: self._statusReplace(match, metadata), FORMAT_STRING)
|
||||||
text = re.sub(FORMAT_REGEX, lambda match: self._statusReplace(match, metadata), FORMAT_STRING)
|
# restore polybar tag formatting and replace any remaining metadata tags after that
|
||||||
# restore polybar tag formatting and replace any remaining metadata tags after that
|
try:
|
||||||
try:
|
text = re.sub(r'p(.*?)p(.*?)p(.*?)p', r'%{\1}\2%{\3}', text.format_map(CleanSafeDict(**metadata)))
|
||||||
text = re.sub(r'p(.*?)p(.*?)p(.*?)p', r'%{\1}\2%{\3}', text.format_map(CleanSafeDict(**metadata)))
|
except:
|
||||||
except:
|
print("Invalid format string")
|
||||||
print("Invalid format string")
|
_printFlush(text)
|
||||||
_printFlush(text)
|
|
||||||
return
|
return
|
||||||
_printFlush(ICON_STOPPED)
|
_printFlush(ICON_STOPPED)
|
||||||
|
|
||||||
@ -360,7 +371,7 @@ parser.add_argument('-b', '--blacklist', help="ignore a player by it's bus name.
|
|||||||
action='append',
|
action='append',
|
||||||
metavar="BUS_NAME",
|
metavar="BUS_NAME",
|
||||||
default=[])
|
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('--truncate-text', default='…')
|
||||||
parser.add_argument('--icon-playing', default='⏵')
|
parser.add_argument('--icon-playing', default='⏵')
|
||||||
parser.add_argument('--icon-paused', default='⏸')
|
parser.add_argument('--icon-paused', default='⏸')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user