diff --git a/.local/bin/mpd-notif b/.local/bin/mpd-notif
index fd5c39a..314a50a 100755
--- a/.local/bin/mpd-notif
+++ b/.local/bin/mpd-notif
@@ -3,26 +3,46 @@
export MPD_HOST="$HOME/.mpd/socket"
DUNST_ID=$(sum <<<"mpd" | cut -d' ' -f1)
+# Déclaration des variables globales
declare -- cursong prevsong
-while true
+# Tant que le service MPD fonctionne
+while systemctl --user is-active mpd.service &>/dev/null
do
- systemctl --user is-active mpd.service &>/dev/null || exit 1
+ # Toutes les 5 secondes, ou dès que le morceau se termine
timeout 5 mpc -w current
+
prevsong="$cursong"
cursong="$(mpc -f '[[%artist%\n|%name%\n]%title%[\n%album%]]|[%file%]' current)"
+
+ # Si le morceau a changé depuis la dernière vérification
if [[ "$cursong" != "$prevsong" ]]
then
- if [[ -z "$cursong" ]]
- then
- infos="Arrêt"
- fi
+
+ # Extractions des informations depuis la chaîne récupérée plus
+ # tôt, vers un format plus lisible.
artist="$(sed -n 1p <<<"$cursong")"
title="$(sed -n 2p <<<"$cursong")"
album="$(sed -n 3p <<<"$cursong")"
+
+ # Petit trick : si le titre s’est retrouvé sur la première
+ # ligne parce qu’il n’y a pas d’artiste renseigné, on corrige
+ # le contenu des variables (pas forcément fiable, mais
+ # chez moi ça marche™).
[[ -z "$title" ]] && title="$artist" && artist=""
- title=$(basename "$title")
+
+ # Si aucune information n’est retournée, c’est que la lecture
+ # s’est arrêtée.
+ if [[ -z "$cursong" ]]
+ then
+ cursong="Arrêt"
+ unset artist title album
+ fi
+
+ # Notification du morceau
dunstify -r "$DUNST_ID" "MPD" "$cursong"
+
+ # Ajout au scrobbler Pleroma
curl -s -X POST -u "breizh:$(pass show Web/pleroma.breizh.pm)" \
--data-urlencode "title=${title}" \
--data-urlencode "artist=${artist}" \
@@ -31,3 +51,6 @@ do
fi
done
+# Si on sort de la boucle c’est que MPD est arrêté, c’est pas normal alors on
+# sort en erreur.
+exit 1