now-playing.sh aka kaputte Software

Mir ist kein anderer Titel eingefallen als der. Ich habe seit.. keine Ahnung.. Ewigkeiten ein sog. now-playing.sh Script, welches den Titel und Interpreten des aktuell gespielten Songs ausgibt. Den lasse ich mir dann in meiner Statusbar anzeigen oder poste die Ausgabe in einem IRC-Channel (die Älteren unter uns wissen wovon ich rede). Das hat bisher problemlos funktioniert; sowohl mit cmus, mpc oder mpd in Verbindung mit ncmpcpp bzw. meinem aktuellen Player rmpc. Wie gesagt.. bisher ..
Seit irgendeinem Update zeigt mpc nämlich nur noch folgendes an:

❯ mpc current
volume: 47%   repeat: off   random: off   single: off   consume: off
❯ mpc status
volume: 47%   repeat: off   random: off   single: off   consume: off
❯ mpc stats
Artists:    918
Albums:     879
Songs:    10450

Play Time:    0 days, 0:00:00
Uptime:       0 days, 19:47:29
DB Updated:   Sun Aug 30 12:24:03 2026
DB Play Time: 52 days, 17:52:42

Mit anderen Worten: Also gar nichts. rmpc gibt den vorhandenen ID3-Tag; und wie es im Internet heutzutage üblich ist, im JSON-Format. Also

{"id":4635,"file":"Prodigy/03. The Fat Of The Land (1997)/01 - Smack My Bitch Up.mp3","duration":{"secs":343,"nanos":150000000},"metadata":{"artist":"The Prodigy","genre":"Unknown","pos":"1","track":"1","title":"Smack My Bitch Up","date":"1997","format":"44100:16:2"},"last_modified":"2024-12-07T20:10:04Z","added":"2025-05-28T16:39:18Z"}

Das ganze mit awk(1) parsen ist grenzwertig, aber dafür gibt es ja jq(1). Nach einem rmpc song | jq bekommt man dann folgende Ausgabe:


{
  "id": 4635,
  "file": "Prodigy/03. The Fat Of The Land (1997)/01 - Smack My Bitch Up.mp3",
  "duration": {
    "secs": 343,
    "nanos": 150000000
  },
  "metadata": {
    "format": "44100:16:2",
    "artist": "The Prodigy",
    "track": "1",
    "date": "1997",
    "title": "Smack My Bitch Up",
    "genre": "Unknown",
    "pos": "1"
  },
  "last_modified": "2024-12-07T20:10:04Z",
  "added": "2025-05-28T16:39:18Z"
}

Sieht also nicht mehr ganz so eklig aus. Jetzt erstmal nur alle in metadata an jq -r '.metadata' ge"pipe"t und folgende Ausgabe erhalten.

{
  "title": "Smack My Bitch Up",
  "artist": "The Prodigy",
  "date": "1997",
  "pos": "1",
  "format": "44100:16:2",
  "genre": "Unknown",
  "track": "1"
}

und schon kommen wir der Sache näher. Das dann nochmal an eine weitere Pipe mit jq -r '"(.artist) - (.title)"' geschickt und schon hat man folgende Ausgabe The Prodigy - Smack My Bitch Up. So weit, so schlecht. Was mir dabei sauer aufgestoßen ist, war die Tatsache das ich zwei Pipes verwenden muss und das auch anders gehen muss. Das Lesen der Manpage von jq(1) hat sich bezahlt gemacht, denn es geht auch mit einer Instanz von jq(1), in dem man einfach folgendes schreibt: rmpc song | jq -r '.metadata | "(.artist) - (.title)"' und siehe da.. immer noch eklig, aber es gibt genau das aus, was ich haben will.

Anscheinend muss man immer alles verschlimmbessern und komplizierter machen. Es gibt sogar eine Issue (#1321) um die Konfigurationsdatei von Mangowm auf LUA zu ändern.. Bin ich hier der einzige, der sich das Internet von ~2000 zurück wünscht?

For comments, please send me an email