Voir le flux RSS

LittleWhite

Avoir des notifications sur une radio lue avec mpv

Noter ce billet
par , 06/09/2020 à 22h57 (220 Affichages)
Bonjour,

J'aime écouter une radio : Nectarine. C'est une radio diffusant les musiques en rapport avec la demoscene. On y retrouve donc des musiques oldskool (SID (Commodore 64), des MOD (Amiga)) et des trucs plus récents. Bref, du bonheur pour moi.

Dernièrement, et pour ne pas installer un lecteur dédié à cet usage, j'ai opté pour mpv.
Peut être il faut mieux l'indiquer maintenant que jamais : Je suis sous Linux.

Lorsque la radio est lue, la sortie est la suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
mpv http://necta.pedroja.tech/necta192.mp3
 (+) Audio --aid=1 (mp3 2ch 44100Hz)
AO: [pulse] 44100Hz stereo 2ch float
A: 00:00:00 / 00:00:03 (19%) Cache: 2.5s/108KB
File tags:
 icy-title: Hunz, Malmen - No Way Out But The Sky (Malmen remix)
A: 00:00:07 / 00:00:10 (73%) Cache: 2.6s/110KB
À chaque changement de titre, un nouveau « File tags » apparaît. Comme je laisse mon terminal dans un coin, en minimiser, il serait super cool d'avoir une petite notification affichant le titre de la musique.

Je sais que je peux faire des notifications avec la commande notify-send. Rien de nouveau pour moi de ce côté la. En bref, cela s'utilise ainsi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
notify-send -a "MPV Nectarine Radio" -i dialog-information -- "Nectarine Radio" "Message"
Par contre, on ne peux pas afficher un message en le pipant dans notify-send.

Aussi, si on étudie légèrement mpv, on remarque :
  • la sortie standard est utilisée pour les messages ;
  • la sortie d'erreur est utilisée pour les informations sur la lecture (position dans le fichier...) ;
  • si on redirige la sortie standard, on ne peux plus contrôler mpv (par exemple 'q' pour quitter le lecteur) ;
  • si on grep la sortie pour la rediriger dans un fichier, le fichier est toujours vide (sûrement à cause des caractère spéciaux pour la gestion de la position de la lecture).


Du coup, en l'état, cela nous limite à faire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
mpv http://necta.pedroja.tech/necta192.mp3 > /tmp/titles
À partir de là, je ne vois qu'une solution : placer une surveillance du fichier dans lequel la sortie de mpv est redirigée, c'est-à-dire inotify (plus précisément, inotifywait). En lisant la documentation, on peut trouver un exemple qu'il suffit d'adapter :
Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
while ! inotifywait -e modify /var/log/messages; do
         if tail -n1 /var/log/messages | grep httpd; then
           kdialog --msgbox "Apache needs love!"
         fi
       done
Amusant, eux aussi ils veulent envoyer des notifications .

Après quelques efforts, cela donne :
Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/bin/bash
 
MPVLOG="/tmp/titles"
STOP_WATCHER=0
 
function watch-log {
    while [ ${STOP_WATCHER} -eq 0 ]  ; do
        inotifywait -e modify ${MPVLOG} > /dev/null 2>&1
        MESSAGE=$(cat ${MPVLOG} | grep "icy-title" | tail -n1 | cut -d " " -f 3-)
        if [ -n "${MESSAGE}" ]
        then
            notify-send -a "MPV Nectarine Radio" -i dialog-information -- "Nectarine Radio" "${MESSAGE}"
        fi
    done
}
 
watch-log &
mpv http://necta.pedroja.tech/necta192.mp3 > ${MPVLOG}
STOP_WATCHER=1

C'est une solution fonctionnelle. La documentation de mpv indique qu'il n'est absolument pas conseillé de reposer sur la sortie du programme. Le mieux est d'utiliser l'API de script, dont nous pouvons trouver une solution ici : https://unix.stackexchange.com/quest...gh-notify-send.
Notamment, avec un tel script, on perd le contrôle au clavier de mpv. Pour arrêter la lecture, il faut passer par un Ctrl-C.
Bref, c'était un petit script, d'un dimanche soir. Ça marche et c'est ce qui compte.

Envoyer le billet « Avoir des notifications sur une radio lue avec mpv » dans le blog Viadeo Envoyer le billet « Avoir des notifications sur une radio lue avec mpv » dans le blog Twitter Envoyer le billet « Avoir des notifications sur une radio lue avec mpv » dans le blog Google Envoyer le billet « Avoir des notifications sur une radio lue avec mpv » dans le blog Facebook Envoyer le billet « Avoir des notifications sur une radio lue avec mpv » dans le blog Digg Envoyer le billet « Avoir des notifications sur une radio lue avec mpv » dans le blog Delicious Envoyer le billet « Avoir des notifications sur une radio lue avec mpv » dans le blog MySpace Envoyer le billet « Avoir des notifications sur une radio lue avec mpv » dans le blog Yahoo

Tags: bash, linux, mpv, radio, script
Catégories
Sans catégorie

Commentaires