Ecouter fip dans un terminal - retour accueil
git clone git://bebou.netlib.re/fip
Log | Files | Refs | README |
commit d15ef6af4b71fac6dc7e7b2c60a151856c13885c parent 4fcd9ed3f178cf36af8ba98d041204924f17c574 Auterice: arthur <arthur.pons@unistra.fr> Date: Fri, 9 Sep 2022 15:32:06 +0200 Suppression des sed, refactorisation, merci Marc Chantreux et Thomas Bernard Diffstat:
M | fip | | | 66 | ++++++++++++++++++++++++++++++++++-------------------------------- |
1 file changed, 34 insertions(+), 32 deletions(-)
diff --git a/fip b/fip @@ -1,44 +1,46 @@ -#! /bin/sh +#!/bin/sh # On lance le stream de fip en qualité moyenne mpv --volume=50 --really-quiet https://icecast.radiofrance.fr/fip-midfi.aac& -while : -do - # On récupère les infos via l'api de radiofrance - json=$(curl -s https://www.radiofrance.fr/api/v1.9/stations/fip/webradios/fip) - - # On filtre pour récupérer le titre du morceau, de l'artiste, de l'album - song=$(echo $json | jq ".now.firstLine,.now.song.release.title,.now.secondLine") +# On récupère les infos via l'api de radiofrance +from_fip() curl -s https://www.radiofrance.fr/api/v1.9/stations/fip/webradios/fip - # On filtre pour récupérer l'url vers la couverture de l'album - cover=$(echo $json | jq .now.cover.src | sed -e 's:\(^"\|"$\)::g') - - # On récupère la quantité de secondes écoulées depuis le premier janvier 1970 - now=$(date "+%s") +# On filtre pour récupérer les infos du morceau en 3 lignes : +# le titre +# l'url de la couverture +# l'heure de fin du morceau +current_track() jq -r ' +( .now | + ( [ .firstLine, .secondLine, .song.release.title]|join(" / ") ) + , .cover.src), + .media.endTime +' - # On récupère le quantité de secondes écoulées depuis le premier janvier 1970 - # à partir duquel le morceau va changer - songendtime=$(echo $json | jq .media.endTime) +# Mise à jour des informations du morceau +enjoy() { + local it pause + for it; do read $it; done - # On soustrait l'un à l'autre pour savoir dans combien de secondes le - # morceau va changer en y ajoutant quelques secondes le temps pour l'api de - # renvoyer à nouveau des timestamps valides sinon on récupère des - # "undefined" et j'ai la flemme de faire les tests pour gérer ces cas - # Le 12 a été choisi de façon purement empirique, je trouve que ça colle - # pas mal avec le changement effectif de morceau + # On calcul le nombre de secondes avant que le morceau change en y ajoutant + # quelques secondes le temps pour l'api de renvoyer à nouveau des + # timestamps valides sinon on récupère des "undefined" et j'ai la flemme de + # faire les tests pour gérer ces cas Le 12 a été choisi de façon purement + # empirique, je trouve que ça colle pas mal avec le changement effectif de + # morceau # A modifier si ce n'est plus le cas - secondsuntilsongend=$(($songendtime-$now+12)) + pause=$(date +"$end %s- 12+ p" | dc) - # On affiche les informations - # Oui je sais pas gérer la sortie de jq alors je fais ce que je peux - echo $song | sed -e 's:\(^"\|"$\)::g' -e 's:" ": - :' -e 's:" ":\n:' - echo $cover - - # On affiche un aperçu de la pochette de l'album avec catimg + echo $title + + # Affiche de la couverture curl -s $cover --output - | catimg -w 80 - + # on attend la fin du morceau + sleep $pause +} - # On attend la fin du morceau en cours pour boucler - sleep $secondsuntilsongend - echo "-------" +while :; do + from_fip | + current_track | + enjoy title cover end done