diff --git a/mmmpd b/mmmpd index 9a08f22..7e54817 100755 --- a/mmmpd +++ b/mmmpd @@ -8,6 +8,7 @@ import datetime import time import logging import mpd +from ipo import ipo, opi, p # pylint: disable=no-member @@ -56,7 +57,31 @@ def song_string(song_info): else: artist = song_info.get("artist") or "Unknown artist" title = song_info.get("title") or "Unknown song" - return f"{artist}{' – ' if artist else ''}{title}" + string = f"{artist}{' – ' if artist else ''}{title}" + if len(string) > 102: + string = (ipo(string) | + p(re.sub)(r"\bOrchestr[ea]\b", r"Orch.") | + p(re.sub)(r"\bFestival\b", r"Fest.") | + p(re.sub)(r"\bSymphon(y|ic)\b", r"Symph.") | + p(re.sub)(r"\bHarmon(y|ic)\b", r"Harm.") | + p(re.sub)(r"\bPhilharmon(y|ic)\b", r"Phil.") | + p(re.sub)(r"\ballegro\b", r"all.", flags=re.IGNORECASE) | + p(re.sub)(r"\bandante\b", r"and.", flags=re.IGNORECASE) | + p(re.sub)(r"\badagio\b", r"adg.", flags=re.IGNORECASE) | + p(re.sub)(r"\bma non troppo\b", r"m.n.t.", flags=re.IGNORECASE) | + p(re.sub)(r"\bviolin\b", r"vln.", flags=re.IGNORECASE) | + p(re.sub)(r"\bpiano\b", r"pno.", flags=re.IGNORECASE) | + p(re.sub)(r"\bmolto\b", r"mlt.", flags=re.IGNORECASE) | + p(re.sub)(r"\bespressivo\b", r"essprs.", flags=re.IGNORECASE) | + p(re.sub)(r"\bsostenuto\b", r"sost.", flags=re.IGNORECASE) | + p(re.sub)(r"\b[Nn]o(?:\. ?| )([0-9])", r"№\1") | + p(re.sub)(r"in ([A-Za-z]) ?sharp", r"in \1♯") | + p(re.sub)(r"in ([A-Za-z]) ?flat", r"in \1♭") | + p(re.sub)(r"in ([A-Z]([#b♭♯])?) ?major", lambda x: f"in {x[1].upper()}", flags=re.IGNORECASE) | + p(re.sub)(r"in ([A-Z]([#b♭♯])?) ?minor", lambda x: f"in {x[1].lower()}", flags=re.IGNORECASE) | + p(re.sub)(r"\band\b", r"&") | + opi) + return string def formatted_status(mpd_client):