Wiki Root66

Le Wiki de Root66, tuto, infos et astuces

Outils pour utilisateurs

Outils du site


ecouter_des_radios_via_internet

Principe

Il existe un grand nombre de radios accessibles via internet. On peut souvent les atteindre via un navigateur, en passant par le site des sociétés qui les gèrent, ou par des logiciels spécialisés tels que StreamTuner.

Le point commun de toutes ces radios, c'est de posséder une “adresse de streaming” ou “adresse de flux” plus ou moins accessible facilement. Certains sites les publient explicitement, d'autres jouent à cache-cache.

Si on arrive à obtenir les adresses des radios qui nous intéressent, on pourra en général les stocker dans un petit fichier texte pour les écouter rapidement sans passer par les méandres d'autres outils.

On va donc donner ici un script bash qui permet à la fois de mémoriser les adresses de ses radios préférées et de les écouter dans la foulée au moyen d'une fenêtre gérée par “Xdialog” :

:wiki-ecoute-radios.jpg

Outre l'intérêt de cet article pour écouter des radios, on pourra le lire avec profit pour :

  • voir l'intérêt de Xdialog pour créer facilement des IHM par script bash,
  • créer un script pour intercepter des commandes passées à un programme,
  • purger automatiquement des dossiers de fichiers temporaires.

Article rédigé par Jeanmm 8-)
Version initiale : 2/6/2006.

Version simplifiée avec emploi de pkill : 8/9/2006.

Le script d'écoute de radios

Voici un petit script tout prêt, contenant un grand nombre de radios françaises (+ classic fm qui est anglaise, et quelques radios portugaises). On pourra l'enrichir à tout moment en lisant les explications contenues dans le script et celles données après le script :

#!/bin/sh
 
# Script de lancement de radios internet par mplayer/totem/xine
 
# Auteur  : Jeanmm - septembre 2006
# Licence : GPL
# Lien    : www.root66.net
 
# La liste des radios a ete partiellement obtenue ici :
# http://forum.hardware.fr/hardwarefr/OSAlternatifs/LINUX-ecouter-radio-internet-SuSE-sujet-47517-1.htm
 
# Cet outil peut etre lance directement en mode graphique pur, mais il est conseille de le lancer
# d'abord dans une console pour detecter d'eventuelles adaptations a faire, par exemple :
# - verifier que mplayer, xine et totem existent, y compris certains de leurs codecs
# - verifier que les parametres passes a mplayer sont valides
#   (cela peut varier selon la distribution; pas de pb en Mandriva)
# - verifier que Xdialog existe, sinon utiliser dialog ou installer le paquetage xdialog
#   (faire 'man dialog' et 'man Xdialog' pour les details)
 
mplayer="mplayer -cache 256 -cache-min 10 -ao alsa -vc dummy -vo null -nortc -nojoystick -nolirc"
 
# Definition d'une boite de menu par Xdialog
# (si Xdialog n'existe pas, remplacer par dialog)
 
function menu ()
{
# boite de menu proprement dite
 
choix=`Xdialog --title "Radios par Internet" \
--menu "Choisissez :" 0 0 23  \
"01" "Europe 1" \
"02" "France Culture" \
"03" "France Info" \
"04" "France Inter" \
"05" "Fip" \
"06" "France Musiques" \
"07" "Le Mouv" \
"08" "Nostalgie" \
"09" "Fun Radio" \
"10" "NRJ" \
"11" "France Bleu" \
"12" "Europe 2" \
"13" "Rires et Chansons" \
"14" "RFM" \
"15" "RTL 2" \
"16" "RTL" \
"17" "France Bleu Orleans" \
"18" "Les Sentiers de la creation" \
"19" "Les Chemins de la connaissance" \
"20" "RMC" \
"21" "Hector" \
"22" "La CityRadio de Paris" \
"23" "Cherie FM" \
"24" "Skyrock" \
"25" "RFI" \
"26" "Classic FM" \
"27" "Radio Nova" \
"28" "Radio Nova Era" \
"29" "RDPI" \
"30" "TSF noticias" \
"31" "Cidade FM" \
"32" "Mega FM" \
2>&1`
 
# traitement de la reponse
 
if [ $? = 0 ]
then
    # on tue d'abord un eventuel player actif pour l'utilisateur courant
    pkill -u $USER mplayer
    pkill -u $USER xine
    pkill -u $USER totem
 
    # lancement de la lecture asynchrone (le & final permet de continuer
    # pour re-afficher immediatement le menu)
    case $choix in
    01 ) $mplayer mms://vip8.yacast.fr/encodereurope1 & ;;
    02 ) $mplayer mms://viptvr.yacast.fr/tvr_franceculture?site & ;;
    03 ) $mplayer mms://vip9.yacast.fr/encoderfranceinfo & ;;
    04 ) $mplayer mms://vip9.yacast.fr/encoderfranceinter & ;;
    05 ) $mplayer http://ogg.tv-radio.fr:1441/encoderfip.ogg & ;;
    06 ) $mplayer mms://viptvr.yacast.fr/tvr_francemusiques?site & ;;
    07 ) $mplayer http://ogg.tv-radio.fr:1441/encoderlemouv.ogg & ;;
    08 ) $mplayer -playlist mms://vip1.yacast.fr/encodernostalgie & ;;
    09 ) $mplayer -playlist mms://vip2.yacast.fr/encoderfun & ;;
    10 ) $mplayer -playlist mms://vip1.yacast.fr/encodernrj & ;;
    11 ) $mplayer mms://viptvr.yacast.fr/tvr_francebleu?site & ;;
    11 ) $mplayer mms://vip7.yacast.fr/encoderouifm & ;;
    12 ) $mplayer mms://vip8.yacast.fr/encodereurope2 & ;;
    13 ) $mplayer -playlist mmst://vip1.yacast.fr/encoderrireetchansons & ;;
    14 ) $mplayer mms://viptvr.yacast.fr/tvr_rfm & ;;
    15 ) $mplayer -playlist mmst://vipbu.yacast.fr/encoderrtl2 & ;;
    16 ) $mplayer http://streaming.radio.rtl.fr/rtl-1-44-96 & ;;
    17 ) $mplayer mms://viptvr.yacast.net/tvr_francebleuorleans?site & ;;
    18 ) $mplayer mms://viptvr.yacast.net/tvr_rfcreation?site & ;;
    19 ) $mplayer mms://viptvr.yacast.net/tvr_rfconnaissance?site & ;;
    20 ) $mplayer -playlist http://cache.yacast.fr/V4/rmc/rmc.asx & ;;
    21 ) $mplayer http://ogg.tv-radio.fr:1441/encoderhector.ogg & ;;
    22 ) $mplayer http://ogg.tv-radio.fr:1441/encodercityradio.ogg & ;;
    23 ) $mplayer -playlist mms://vip1.yacast.fr/encodercheriefm & ;;
    24 ) $mplayer -playlist mms://vipbu.yacast.fr/encoderskyrock & ;;
    25 ) xine -H rtsp://a1234.l663344176.c6633.g.lr.akamaistream.net/live/D/1234/6633/666/reflector:44176 & ;;
    26 ) totem /usr/local/bin/playlist-classicfm.asx & ;;
    27 ) $mplayer mms://netshow.esoterica.pt/nova & ;;
    28 ) $mplayer mms://82.102.32.131/RNE & ;;
    29 ) totem http://194.235.129.79/rdpi.asx & ;;
    30 ) $mplayer -playlist http://www.tsfnoticias.com/tsfdirecto.asx & ;;
    31 ) $mplayer -playlist http://www.cidadefm.iol.pt/asx/estrangeiro/cidade.asx & ;;
    32 ) $mplayer -playlist http://195.245.179.41/stream_megafm.asx & ;;
    esac
else
    pkill -u $USER mplayer
    pkill -u $USER xine
    pkill -u $USER totem
    exit 0
fi
}
 
# Boucle principale de re-affichage perpetuel du menu.
# On en sort par appui sur le bouton annuler.
 
while :
do menu
done

On pourra donc copier/coller les lignes ci-dessus dans un fichier texte, le rendre exécutable, le copier dans un dossier d'exécutables connu comme /usr/local/bin, puis créer une icône sur son bureau pour le lancer. On aura alors un accès direct à la liste des radios ci-dessus, et un double-clic sur un des noms (ou clic simple + bouton OK) lancera la lecture.

Pour ajouter ultérieurement une nouvelle radio, il suffira de :

  • trouver son adresse,
  • tester sa lecture manuellement dans une console par un lecteur multimédia tel que ceux utilisés dans ce script (ou d'autres),
  • une fois la lecture manuelle satisfaisante, insérer 2 lignes dans le script, l'une pour le titre, la seconde avec la commande de lecture.

Remarques et astuces

Important : La lecture pourra ne pas marcher à tous les coups; citons les points suivants :

  • le démarrage peut être plus ou moins long (temps de remplissage du “buffer de lecture”),
  • l'adresse internet peut avoir changé, et ceci est plus fréquent qu'on ne le pense ! Si une radio ne marche donc plus après plusieurs essais infructueux, penser à faire une recherche pour trouver une nouvelle adresse de flux valide puis le lecteur adapté à son traitement;
  • le serveur internet peut être temporairement indisponible ou surchargé…

Trouver des adresses de flux par interception de commande

Certains lecteurs lancés par d'autres logiciels (par exemple xmms lancé par streamtuner) le sont en leur passant en paramètre l'adresse du flux à lire, ou un petit fichier temporaire contenant l'adresse du flux. Un moyen simple d'intercepter le lancement du lecteur est de créer un script spécialisé.

Prenons donc l'exemple de xmms. Pour savoir où se trouve ce programme on tape “which xmms”, ce qui nous donne alors :

/usr/bin/xmms

On va donc créer un script bash exécutable appelé xmms.perso et contenant par exemple les lignes :

#!/bin/sh
echo "xmms $*"  >/tmp/xmms-$USER.txt
/usr/bin/xmms.vrai $* &

Puis on va le mettre à la place du vrai programme xmms (en root) :

cp xmms.perso /usr/bin/
mv /usr/bin/xmms /usr/bin/xmms.vrai
cp /usr/bin/xmms.perso /usr/bin/xmms

Le but du script est de créer à chaque appel de xmms un petit fichier “/tmp/xmms-$USER.txt” (où $USER sera remplacé par son nom de login) avant de lancer le vrai programme xmms. Le fichier contiendra les paramètres d'appel à xmms. Prenons un exemple de lecture de radio par streamtuner;

ls /tmp/xmms*
/tmp/xmms-toto.txt
 
cat /tmp/xmms-toto.txt
xmms /home/toto/tmp/streamtuner.shoutcast.XqXMol.m3u
 
cat /home/toto/tmp/streamtuner.shoutcast.XqXMol.m3u
#M3U
http://209.9.226.71:80
http://207.152.135.11:8080

On peut faire un essai manuel direct des 2 adresses ci-dessus pour les vérifier :

xmms http://209.9.226.71:80
xmms http://207.152.135.11:8080

Les 2 adresses marchent, on pourra donc en coder une dans le script d'écoute perso.

Petites remarques
  • on voit que streamtuner crée un fichier temporaire intermédiaire pour y stocker les adresses de flux,
  • il faut donc lister ce fichier temporaire et vérifier si on peut s'en passer, ce qui est le cas ici;
  • on découvre que streamtuner est un de ces programmes qui “laissent trainer” de nombreux fichiers sur le disque, et qu'il faut prévoir un mécanisme de purge du dossier /home/toto/tmp; ce genre de purge est le domaine de l'utilitaire “tmpwatch”, et par exemple pour une Mandriva il suffit d'insérer une ligne “/usr/sbin/tmpwatch 240 /home/toto/tmp” dans le fichier “/etc/cron.daily/tmpwatch” pour que tous les jours on y supprime les fichiers de plus de 10 jours (prévoir la commande pour tous les utilisateurs du PC); voir aussi les infos données ici : purges;
  • quand on modifie un fichier standard du système, on a toujours intérêt à en garder une copie ailleurs pour pouvoir le restaurer en cas de besoin. En effet, une mise-à-jour du paquetage xmms va probablement écraser notre fichier /usr/bin/xmms, d'où l'intérêt de garder /usr/bin/xmms.perso pour refaire la manip. De même, le fichier /etc/cron.daily/tmpwatch risque de perdre la modif qu'on y aura faite, et il faut donc en garder aussi une trace ailleurs.

Xdialog

Cet article présente un cas très particulier d'utilisation de Xdialog, avec seulement une liste déroulante et deux boutons. Il existe cependant de très nombreuses possibilités. Les personnes ayant installé une Mandriva trouveront beaucoup d'exemples avec images et code ici : /usr/share/doc/Xdialog-2.1.1; il existe aussi de nombreux articles sur le web, ne pas hésiter à effectuer une recherche.

A noter aussi l'existence de “dialog”, relativement compatible avec “Xdialog”, mais qui s'emploie en mode console (texte pur), en ne jouant que sur les couleurs de caractères et les couleurs de fond.

;-)

ecouter_des_radios_via_internet.txt · Dernière modification : 2021/10/18 16:09 de 127.0.0.1