Le site arthur.bebou.netlib.re - retour accueil
git clone git://bebou.netlib.re/arthur.bebou
Log | Files | Refs |
index.sh (8952B)
1 #! page 2 3 title: Ecoutez radio france dans votre console 4 author: Arthur Pons 5 description: Explorons comment écouter la radio en ligne de commande et les avantages que cela peut procurer 6 publication: 2023-11-23 7 8 sectionmd: main 9 10 FIP n'est pas toujours disponible sur les ondes hertziennes. Il faut donc 11 parfois se résoudre à l'écouter sur internet. Or, les interfaces web pour le 12 faire sont : 13 14 * très peu performantes, ne fonctionnent pas ou très mal sur du vieux matériel 15 * absolument pas interopérables avec d'autres systèmes 16 17 J'ai donc entrepris il y a longtemps d'écrire un script permettant 18 d'écouter FIP dans la console et d'offrir une interface de sortie simple de 19 façon à pouvoir la conjuguer avec d'autres systèmes. 20 21 Si vous avez lu à peu près n'importe quel autre article de ma part sur ce site, 22 c'est toujours la même rengaine. Tout ce que j'écris ici fonctionne pour 23 FIP mais devrait pouvoir être adapté sans troooop d'effort pour n'importe 24 quelle radio de radio france. 25 26 ## Installation 27 28 ### Dépendances 29 30 * curl (pourrait être changé pour wget) 31 * jq (pour parser ce que renvoie l'api de radio france) 32 * mpv (pour lire le flux audio, remplaçable par n'importe quel lecteur audio qui sait lire un flux audio depuis internet) 33 34 Pour faire fonctionner le programme il faudra soit installer ces programmes 35 soit modifier le script pour y mettre des remplaçants. 36 37 ### Télécharger le script 38 39 Le code est dispo sur notre serveur git. Il vous suffit de le cloner : 40 41 git clone git://katzele.netlib.re/fip 42 43 Alternativement, si vous n'avez pas git ou si vous ne voulez pas l'utiliser, 44 le script tel qu'il est à l'heure où j'écris ces lignes se trouve [ici](./fip). 45 Il suffit d'en copier le contenu dans un fichier sur votre pc. 46 47 ### Préparer un dossier pour recevoir les infos 48 49 Il vous faut ensuite choisir un dossier existant quelconque (ou en créer un) 50 dans lequel le script enregistra un fichier texte contenant les infos des 51 titres (pour des raisons que j'explique [ici](#interoprabilit) et 52 [là](/musique/#astuces-dusage-)). 53 54 Il faut ensuite modifier le `~/git/fip/session` de cette ligne du script 55 56 echo "$title $(date)" >> ~/git/fip/session 57 58 par le chemin du dossier et du fichier dans lequel vous voulez inscrire les 59 informations. Par exemple, si vous avez créé le dossier `fip` et que vous 60 voulez nommer le fichier `data` : 61 62 echo "$title $(date)" >> /home/utilisateurice/fip/data 63 64 ## Usage 65 66 Il suffit de lancer le script qui lira par défaut FIP : 67 68 ./fip 69 Donna Blue - Fantasy girl 70 |======================================--------------------| 71 72 Une fois le script lancé vous pouvez, du moins si vous utilisez `mpv`, revenir 73 en arrière dans le flux audio, faire pause, le mutter etc avec les raccourcis 74 clavier habituels. Voir le manuel d'mpv pour le connaître. 75 76 > Si au lancement vous obtenez une erreur similaire à : `./fip: nn: cannot 77 > create /home/blablabla/git/fip/session: Directory nonexistent` 78 > 79 > c'est que vous n'avez pas effectué [cette 80 > modification](#prparer-un-dossier-pour-recevoir-les-infos) ou que vous l'avez 81 > faite mais qu'elle ne correspond pas au dossier que vous avez choisi pour 82 > contenir le fichier. Assurez vous de bien renseigner le chemin d'un fichier 83 > dont les dossiers parents existent sur votre machine. 84 85 Avec pour argument `list` il affichera toutes les sous chaînes de fip : 86 87 ./fip list 88 FIP_ROCK 89 FIP_JAZZ 90 FIP_GROOVE 91 FIP_WORLD 92 FIP_NOUVEAUTES 93 FIP_REGGAE 94 FIP_ELECTRO 95 FIP_METAL 96 FIP_POP 97 FIP_HIP_HOP 98 99 Et avec pour argument l'une de ces webradios c'est celle-ci que vous écouterez : 100 101 ./fip FIP_JAZZ 102 Dave Brubeck - Blue Shadows in the street 103 |=---------------------------------------------------------| 104 105 ## Interopérabilité 106 107 Par défaut la totalité des titres qui s'afficheront dans votre console 108 seront également sauvegardés dans un fichier de votre choix comme expliqué [au 109 dessus](#usage). 110 111 Par défaut le contenu de ce fichier sera sous la forme : 112 113 Seb Wildblood - Slice (feat. Laraaji) jeu. 23 nov. 2023 15:22:24 CET 114 Dennis Bovell - Bettah jeu. 23 nov. 2023 15:22:35 CET 115 Jam (Human Spirit) - Les portes du pénitencier jeu. 23 nov. 2023 15:25:50 CET 116 Nana Adjoa - Throw stones jeu. 23 nov. 2023 15:30:15 CET 117 Maiiah & The Angels Of Libra - I wanna go jeu. 23 nov. 2023 15:36:00 CET 118 David Bowie - Soul love jeu. 23 nov. 2023 15:39:32 CET 119 120 La date est celle à laquelle le titre a commencé. 121 122 Cela vous permet ensuite de faire ce que vous voulez avec ce contenu. 123 Des statistiques, retrouver dans le futur une chanson qui vous a plu 124 ou comme je le documente [là](/musique/#astuces-dusage-), 125 ajouter automatiquement le titre écouté en direct à une playlist 126 de votre choix. 127 128 ## Modification 129 130 Comme tous les petits scripts vite fait, il est moche et mal fait. Cela étant 131 dit, ci-dessous un petit guide pour le modifier script si vous en ressentez le 132 besoin. Je ne renseigne pas les numéros de lignes parce qu'elles 133 risque de changer. Je donne le contenu de la ligne, vous pouvez faire 134 une recherche dessus ou simplement "grepper avec les yeux", le script est court. 135 136 Je pourrais mettre en place pleins d'options pour que vous n'ayez pas à 137 regarder dans le code mais c'est pas trop l'esprit Katzele, du moins pas pour 138 un script aussi simple et court. Si vous n'avez pas l'habitude d'écrire du code 139 considérez cela comme une opportunité pour vous y mettre un tout petit peut, le 140 désacraliser et exercez de manière très concrète au moins deux des quatre 141 libertés que vous offrent les logiciels libres. 142 143 Promis certaines de ces modifications sont à la portées de toustes. 144 145 ### Changer la radio 146 147 Si vous connaissez l'identifiant d'une autre radio de radio france vous 148 pouvez l'écouter en faisant `./fip FRANCE_INTER` par exemple où la mettre 149 par défaut en modifiant la ligne déclarant la variable `radio` : 150 151 radio="FRANCE_INTER" 152 153 Attention, si la chaîne que vous choisissez ne passe pas de la musique vous 154 obtiendrez des erreurs puisque le code actuel ne parse le résultat de l'API que 155 pour obtenir des chansons. Dans le schéma de données de radio france, une chanson 156 n'est pas la même chose qu'une émission de radio. Cette modification permet donc 157 d'écouter n'importe quelle chaîne mais pas d'afficher les infos de l'émission 158 à l'écran si ce n'est pas de la musique.[^1] 159 160 ### Modifier la tête de la barre de progression 161 162 Pour modifier sa longueur modifiez la valeur de `length` sur cette ligne : 163 164 length=60 165 166 Pour modifier ses composants, modifiez les variables `delim`, `before` et `after`. 167 Par exemple pour qu'elle soit initialement vide puis se remplisse de `#` : 168 169 length=60; delim='/'; before=' '; after='#' 170 # Qui donnera 171 /########### / 172 173 ### Modifier les données affichées dans la console 174 175 Cela se passe sur cette ligne : 176 177 echo "$title" 178 179 N'importe quoi d'envoyé dans STDOUT à cette endroit sera affiché dans la 180 console. 181 182 ### Modifier ce qui est enregistré dans le fichier de sauvegarde 183 184 Comme indiqué précédemment cela se passe à cette ligne : 185 186 echo "$title $(date)" >> ~/git/fip/session 187 188 Par exemple si l'on voulait la date mais sous forme de timestamp 189 UNIX pour plus de flexibilité : 190 191 echo "$title $(date +%s)" >> ~/git/fip/session 192 193 ### Si vous voulez supprimer la barre de progression 194 195 Le plus direct est de commenter ou supprimer ces **deux** lignes : 196 197 echo "$barlines" | sed -E "1,$i s/$before/$after/g" | tr -d '\n' 198 199 ... 200 201 eraseline 202 203 Pour commenter il faut ajouter un `#` en début de ligne. 204 Elles ne s'exécuteront plus. 205 206 ### Si vous voulez utiliser un autre lecteur qu'mpv 207 208 Mettez le nécessaire à la ligne ; 209 210 mpv --volume=50 --really-quiet "https://icecast.radiofrance.fr/$(echo $radio | tr -d '_' | tr '[A-Z]' '[a-z]')-midfi.mp3" 211 212 La construction de l'url peut rester la même, c'est ce qui précède avant qu'il 213 conviendra de changer. Par exemple ceci fonctionne : 214 215 vlc "https://icecast.radiofrance.fr/$(echo $radio | tr -d '_' | tr '[A-Z]' '[a-z]')-midfi.mp3" 216 217 ### Si vous voulez récupérer d'autres infos de l'api 218 219 C'est une modification plus délicate. Il faudra vous documenter. Elle se trouve 220 [ici](https://developers.radiofrance.fr/). 221 222 En tout cas la requête est celle-ci : 223 224 curl -Ls 'https://openapi.radiofrance.fr/v1/graphql' \ 225 -H 'Content-Type: application/json' \ 226 -H 'x-token: 9720d513-a257-417a-9d05-0772dd40a7e5' \ 227 --data-binary '{"query":"{ live(station: '$radio') { song { end track { mainArtists title } } }}"}' \ 228 --compressed 229 230 C'est donc tout ce qui est passé en argument de `--data-binary` qu'il 231 conviendra de modifier puis cette ligne qui parse le résultat pour le mettre 232 sous la forme voulu : 233 234 jq -r ' ( .data.live.song | ([.track.mainArtists[], " - ", .track.title]|join("")), .end)' 235 236 237 [^1]: J'ai testé ça fonctionne même pas avec france musique. Considérez donc que ça ne supporte que FIP pour l'instant.