Mise à jour du gestionnaire de notifications MPD

This commit is contained in:
Breizh 2022-11-10 01:14:44 +01:00
parent c19b2ee7d5
commit a785460823
1 changed files with 30 additions and 7 deletions

View File

@ -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="<i>Arrêt</i>"
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 sest retrouvé sur la première
# ligne parce quil ny a pas dartiste 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 nest retournée, cest que la lecture
# sest arrêtée.
if [[ -z "$cursong" ]]
then
cursong="<i>Arrêt</i>"
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 cest que MPD est arrêté, cest pas normal alors on
# sort en erreur.
exit 1