Compress song info if longer than MM's limit

This commit is contained in:
Midgard 2022-08-31 22:56:33 +02:00
parent bb895e9c9a
commit 005818457d
Signed by: midgard
GPG key ID: 511C112F1331BBB4

27
mmmpd
View file

@ -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):