"Now playing" dans le terminal
Aujourd’hui un petit script totalement inutile. Donc comme on dit, rigoureusement indispensable. Je vous propose d’afficher dans le terminal la chanson en cours et la pochette de l’album.

L’utilitaire playerctl
Voulant comprendre un peu mieux D-Bus, je suis tombé sur le protocole MPRIS,
qui m’a lui-même emmené vers playerctl.
C’est un utilitaire minimaliste qui va nous permettre, par exemple, de
- lister les players (
--list-all) - connaître l’état des players (
--status) - obtenir des métadonnées (
--metadata)
La liste des players en cours d’utilisation
$ playerctl --list-all
firefox.instance_1_233
qmmpL’état d’un player
$ playerctl --player=qmmp status
PlayingLes métadonnées de la chanson en cours
$ playerctl --player=qmmp metadata
qmmp mpris:artUrl file:///home/xavier/Albums/Kraftwerk - The Man·Machine/cover.jpg
qmmp mpris:length 374200000
qmmp mpris:trackid '/org/qmmp/MediaPlayer2/Track/2067028550'
qmmp xesam:album The Man·Machine
qmmp xesam:artist Kraftwerk
qmmp xesam:contentCreated 2003
qmmp xesam:genre electro
qmmp xesam:title The Robots
qmmp xesam:trackNumber 1Extraction des informations
$ playerctl --player=qmmp metadata --format "Now playing {{artist}} - {{album}} - {{title}}"
Now playing Kraftwerk - The Man·Machine - SpacelabL’url de la cover
$ playerctl --player=qmmp metadata mpris:artUrl
file:///home/xavier/Albums/Kraftwerk - The Man·Machine/cover.jpgAfficher une image dans le terminal avec chafa
Pour rendre la chose un peu plus fun, je vais afficher la pochette de l’album.
Plusieurs utilitaires peuvent faire ça, j’utiliserai ici chafa. Cet utilitaire convertit des images en caractères (unicode ou ASCII). La doc dit «Character art facsimile generator». Je vous conseille d’ailleurs de lire cette documentation car il y a énormément d’options disponibles.
Un exemple simple
chafa --format=symbols --size=40x40 cover.jpgLe script final
À vous de l’adapter à votre player, à vos envies, etc.
# Fichier ~./config/fish/functions/now-playing.fish
function now-playing \
--description 'Show what song is currently playing by Qmmp player'
set player qmmp
set present false
for i in (playerctl --list-all)
if [ $i = $player ]
set present true
end
end
if not $present
echo '🎵 Playing nothing'
return
end
set cover (playerctl --player=qmmp metadata mpris:artUrl)
echo
if [ -z $cover ]
echo "🎵 No cover"
else
chafa --format=symbols -w 9 --size=40x40 (string replace 'file://' '' $cover)
end
echo
playerctl --player=qmmp metadata --format "🎵 Now playing {{artist}} - {{album}} - {{title}}"
echo
endRessources
Commentaires
Pas encore trouvé de solution simple et non-invasive pour avoir des commentaires sur le blog. En attendant vous pouvez laisser votre commentaire et/ou engager une discussion sur mastodon@lkdjiin ou twitter@lkdjiin