#!/bin/bash export MPD_HOST="$HOME/.mpd/socket" DUNST_ID=$(sum <<<"mpd" | cut -d' ' -f1) # Déclaration des variables globales declare -- cursong prevsong # Tant que le service MPD fonctionne while systemctl --user is-active mpd.service &>/dev/null do # 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 # 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="" # Si on obtiens un chemin absolu, on n’affiche que le nom, pas # le chemin. [[ -f "/${title}" ]] && 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}" \ --data-urlencode "album=${album}" \ https://pleroma.breizh.pm/api/v1/pleroma/scrobble &>/dev/null 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