Ecoutez la radio dans votre console

Auteurice : Arthur Pons

Temps de lecture : ~6 minutes


FIP n’est pas toujours disponible sur les ondes hertziennes. Il faut donc parfois se résoudre à l’écouter sur internet. Or, les interfaces web pour le faire sont :

J’ai donc entrepris il y a longtemps d’écrire un script permettant d’écouter FIP dans la console et d’offrir une interface de sortie simple de façon à pouvoir la conjuguer avec d’autres systèmes.

Si vous avez lu à peu près n’importe quel autre article de ma part sur ce site, c’est toujours la même rengaine. Tout ce que j’écris ici fonctionne pour FIP mais devrait pouvoir être adapté sans troooop d’effort pour n’importe quelle radio de radio france.

Installation

Dépendances

Pour faire fonctionner le programme il faudra soit installer ces programmes soit modifier le script pour y mettre des remplaçants.

Télécharger le script

Le code est dispo sur notre serveur git. Il vous suffit de le cloner :

git clone git://katzele.netlib.re/fip

Alternativement, si vous n’avez pas git ou si vous ne voulez pas l’utiliser, le script tel qu’il est à l’heure où j’écris ces lignes se trouve ici. Il suffit d’en copier le contenu dans un fichier sur votre pc.

Préparer un dossier pour recevoir les infos

Il vous faut ensuite choisir un dossier existant quelconque (ou en créer un) dans lequel le script enregistra un fichier texte contenant les infos des titres (pour des raisons que j’explique ici et ).

Il faut ensuite modifier le ~/git/fip/session de cette ligne du script

echo "$title    $(date)" >> ~/git/fip/session

par le chemin du dossier et du fichier dans lequel vous voulez inscrire les informations. Par exemple, si vous avez créé le dossier fip et que vous voulez nommer le fichier data :

echo "$title    $(date)" >> /home/utilisateurice/fip/data

Usage

Il suffit de lancer le script qui lira par défaut FIP :

./fip
Donna Blue - Fantasy girl
|======================================--------------------|

Une fois le script lancé vous pouvez, du moins si vous utilisez mpv, revenir en arrière dans le flux audio, faire pause, le mutter etc avec les raccourcis clavier habituels. Voir le manuel d’mpv pour le connaître.

Si au lancement vous obtenez une erreur similaire à : ./fip: nn: cannot create /home/blablabla/git/fip/session: Directory nonexistent

c’est que vous n’avez pas effectué cette modification ou que vous l’avez faite mais qu’elle ne correspond pas au dossier que vous avez choisi pour contenir le fichier. Assurez vous de bien renseigner le chemin d’un fichier dont les dossiers parents existent sur votre machine.

Avec pour argument list il affichera toutes les sous chaînes de fip :

./fip list
FIP_ROCK
FIP_JAZZ
FIP_GROOVE
FIP_WORLD
FIP_NOUVEAUTES
FIP_REGGAE
FIP_ELECTRO
FIP_METAL
FIP_POP
FIP_HIP_HOP

Et avec pour argument l’une de ces webradios c’est celle-ci que vous écouterez :

./fip FIP_JAZZ
Dave Brubeck - Blue Shadows in the street
|=---------------------------------------------------------|

Interopérabilité

Par défaut la totalité des titres qui s’afficheront dans votre console seront également sauvegardés dans un fichier de votre choix comme expliqué au dessus.

Par défaut le contenu de ce fichier sera sous la forme :

Seb Wildblood - Slice (feat. Laraaji)           jeu. 23 nov. 2023 15:22:24 CET
Dennis Bovell - Bettah                          jeu. 23 nov. 2023 15:22:35 CET
Jam (Human Spirit) - Les portes du pénitencier  jeu. 23 nov. 2023 15:25:50 CET
Nana Adjoa - Throw stones                       jeu. 23 nov. 2023 15:30:15 CET
Maiiah & The Angels Of Libra - I wanna go       jeu. 23 nov. 2023 15:36:00 CET
David Bowie - Soul love                         jeu. 23 nov. 2023 15:39:32 CET

La date est celle à laquelle le titre a commencé.

Cela vous permet ensuite de faire ce que vous voulez avec ce contenu. Des statistiques, retrouver dans le futur une chanson qui vous a plu ou comme je le documente , ajouter automatiquement le titre écouté en direct à une playlist de votre choix.

Modification

Comme tous les petits scripts vite fait, il est moche et mal fait. Cela étant dit, ci-dessous un petit guide pour le modifier script si vous en ressentez le besoin. Je ne renseigne pas les numéros de lignes parce qu’elles risque de changer. Je donne le contenu de la ligne, vous pouvez faire une recherche dessus ou simplement “grepper avec les yeux”, le script est court.

Je pourrais mettre en place pleins d’options pour que vous n’ayez pas à regarder dans le code mais c’est pas trop l’esprit Katzele, du moins pas pour un script aussi simple et court. Si vous n’avez pas l’habitude d’écrire du code considérez cela comme une opportunité pour vous y mettre un tout petit peut, le désacraliser et exercez de manière très concrète au moins deux des quatre libertés que vous offrent les logiciels libres.

Promis certaines de ces modifications sont à la portées de toustes.

Changer la radio

Si vous connaissez l’identifiant d’une autre radio de radio france vous pouvez l’écouter en faisant ./fip FRANCE_INTER par exemple où la mettre par défaut en modifiant la ligne déclarant la variable radio :

radio="FRANCE_INTER"

Attention, si la chaîne que vous choisissez ne passe pas de la musique vous obtiendrez des erreurs puisque le code actuel ne parse le résultat de l’API que pour obtenir des chansons. Dans le schéma de données de radio france, une chanson n’est pas la même chose qu’une émission de radio. Cette modification permet donc d’écouter n’importe quelle chaîne mais pas d’afficher les infos de l’émission à l’écran si ce n’est pas de la musique.1

Modifier la tête de la barre de progression

Pour modifier sa longueur modifiez la valeur de length sur cette ligne :

length=60

Pour modifier ses composants, modifiez les variables delim, before et after. Par exemple pour qu’elle soit initialement vide puis se remplisse de # :

length=60; delim='/'; before=' '; after='#'
# Qui donnera
/###########                                           /

Modifier les données affichées dans la console

Cela se passe sur cette ligne :

echo "$title"

N’importe quoi d’envoyé dans STDOUT à cette endroit sera affiché dans la console.

Modifier ce qui est enregistré dans le fichier de sauvegarde

Comme indiqué précédemment cela se passe à cette ligne :

echo "$title    $(date)" >> ~/git/fip/session

Par exemple si l’on voulait la date mais sous forme de timestamp UNIX pour plus de flexibilité :

echo "$title    $(date +%s)" >> ~/git/fip/session

Si vous voulez supprimer la barre de progression

Le plus direct est de commenter ou supprimer ces deux lignes :

echo "$barlines" | sed -E "1,$i s/$before/$after/g" | tr -d '\n'

...

eraseline

Pour commenter il faut ajouter un # en début de ligne. Elles ne s’exécuteront plus.

Si vous voulez utiliser un autre lecteur qu’mpv

Mettez le nécessaire à la ligne ;

mpv --volume=50 --really-quiet "https://icecast.radiofrance.fr/$(echo $radio | tr -d '_' | tr '[A-Z]' '[a-z]')-midfi.mp3"

La construction de l’url peut rester la même, c’est ce qui précède avant qu’il conviendra de changer. Par exemple ceci fonctionne :

vlc "https://icecast.radiofrance.fr/$(echo $radio | tr -d '_' | tr '[A-Z]' '[a-z]')-midfi.mp3"

Si vous voulez récupérer d’autres infos de l’api

C’est une modification plus délicate. Il faudra vous documenter. Elle se trouve ici.

En tout cas la requête est celle-ci :

curl -Ls 'https://openapi.radiofrance.fr/v1/graphql' \
-H 'Content-Type: application/json' \
-H 'x-token: 9720d513-a257-417a-9d05-0772dd40a7e5' \
--data-binary '{"query":"{ live(station: '$radio') { song { end track { mainArtists title } } }}"}' \
--compressed

C’est donc tout ce qui est passé en argument de --data-binary qu’il conviendra de modifier puis cette ligne qui parse le résultat pour le mettre sous la forme voulu :

jq -r ' ( .data.live.song | ([.track.mainArtists[], " - ", .track.title]|join("")), .end)'

  1. J’ai testé ça fonctionne même pas avec france musique. Considérez donc que ça ne supporte que FIP pour l’instant.