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