- Installation
- Usage
- Interopérabilité
- Modification
- Changer la radio
- Modifier la tête de la barre de progression
- Modifier les données affichées dans la console
- Modifier ce qui est enregistré dans le fichier de sauvegarde
- Si vous voulez supprimer la barre de progression
- Si vous voulez utiliser un autre lecteur qu’mpv
- Si vous voulez récupérer d’autres infos de l’api
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 :
- très peu performantes, ne fonctionnent pas ou très mal sur du vieux matériel
- absolument pas interopérables avec d’autres systèmes
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
- curl (pourrait être changé pour wget)
- jq (pour parser ce que renvoie l’api de radio france)
- mpv (pour lire le flux audio, remplaçable par n’importe quel lecteur audio qui sait lire un flux audio depuis internet)
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 là).
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 là, 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)'
-
J’ai testé ça fonctionne même pas avec france musique. Considérez donc que ça ne supporte que FIP pour l’instant. ↩