bonjour;
Nouveau venu ici, voici une petite contribution: c’est un script qui permet d’écouter mes radios favorite via mplayer. Ce script demande de cliker sur la radio, puis lance mplayer. Il y manque un test de reconnexion en cas de perte du flux.ainsi qu’un bouton d’arret.
#!/usr/bin/perl -w
# ---------------------------------------
# interface perl & tk pour l'écoute
# d'une radio via internet
# ---------------------------------------
# R. Suinot (rsuinux@gmx.fr)
# le 13/03/2004 / Rev° 15/03/2004
# ---------------------------------------
# historique:
# -> 15/03/2004:
# - chargement d'un fichier de radio
# A faire?
# ->
# - gestion des erreurs du playeur (mplayer ou xmms)
# et/ou couper le playeur si processus deja en cours.
# ->
# - tester le numéro de port et/ou adresse internet
# ->
# - gestion des options (fichier des radios, ...)
# ->
# - gerer le flux rtsp de la freebox?
# ---------------------------------------
use strict;
use Tk;
use Tk::widgets qw/ Dialog ROText /;
my $UPDATED = '15 Mars 2004';
my $FONT = '-*-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-*';
my $ERROR_TXT="Erreur de type inconnue";
my $fichier="/home/admin/bin/radio.lst";
&charge_fichier_liste_radio();
my @radio;
my @adresse;
my $titre="Selecteur de radio ";
my $mw = MainWindow->new;
$mw->title($titre);
my $lookup_frame = $mw->Frame()->pack(-expand => '1', -fill => 'both', -side => 'top');
#-- boite d'erreur
my $dialog_err = $mw->Dialog(
-title => 'ERREUR(s)',
-bitmap => 'error',
-default_button => [ 'Ok' ],
-textvariable => \$ERROR_TXT
);
$dialog_err -> resizable(0, 0);
#-- boite About
my $help = $mw->Dialog(
-title => 'About',
-bitmap => 'questhead',
-default_button => 'OK',
-buttons => [ 'OK' ],
-font => $FONT,
-text => "Radio-Net\n" . "La radio via Internet \n" .
"necessite mplayer et ses divers drivers.\n" .
"remi\@suinot.org\n". "(updated $UPDATED)\n\n" .
"Tk version $Tk::VERSION"
);
$help->resizable(0, 0);
#-- bouton About
my $about = $lookup_frame->Button(
-text => 'About',
-command => [ $help => 'Show' ]
)->pack(-side => 'left', -expand => '1', -fill => 'both');
#-- bouton Exit
my $exit = $lookup_frame->Button(
-text => 'Exit',
-cursor => 'hand1',
-activeforeground => 'red',
-command => sub { exit; }
)->pack(-side => 'left', -expand => '1', -fill => 'both');
# -- nouvelle frame pour la liste des radio
my $liste_radio = $mw->Frame()->pack(-side => 'left', -expand => '1', -fill => 'both');
$liste_radio->Label(-text=> "\n Choisissez votre radio! \n")->pack(-side => 'top');
my $i=0;
my $j=0;
my $result=-1;
foreach $i (@radio ){
$j++;
$liste_radio->Radiobutton(
-text => $i,
-variable => \$result,
-value => $j
)->pack( -side => 'top');
}
# -- bouton Ecouter!
my $execute = $liste_radio->Button(
-text => 'Ecoutez!',
-background => 'cyan',
-foreground => 'blue',
-borderwidth => 1,
-relief => 'ridge',
-highlightthickness => 0,
-command => \&ecoutez
)->pack(-side => 'bottom');
MainLoop;
#-------------- Fonctions -------------------------
sub ecoutez {
print "valeur de sortie: $result \n";
if ( $result == 1) {
print "$result: $adresse[0]";
exec "mplayer -slave $adresse[0]";
} elsif ( $result == 2) {
print "$result: $adresse[1]\n";
exec "mplayer -slave $adresse[1]";
} elsif ( $result == 3) {
print "$result: $adresse[2]\n";
exec "mplayer -slave $adresse[2]";
} elsif ( $result == 4) {
print "$result: $adresse[3]\n";
exec "mplayer -slave $adresse[3]";
} elsif ( $result == 5) {
print "$result: $adresse[4]\n";
exec "mplayer -slave $adresse[4]";
} elsif ( $result == 6) {
print "$result: $adresse[5]\n";
exec "mplayer -slave $adresse[5]";
} elsif ( $result == 7) {
print "$result: $adresse[6]\n";
exec "mplayer -slave $adresse[6]";
} elsif ( $result == 8) {
print "$result: $adresse[7]\n";
exec "mplayer -slave $adresse[7]";
} elsif ( $result == -1) {
$ERROR_TXT="Vous n'avez rien séctionneé!!!\n Réfléchissez un peu!";
$dialog_err->Show;
} else {
$ERROR_TXT="Erreur de type inconnue...!!!\n";
$dialog_err->Show;
}
}
sub charge_fichier_liste_radio {
my $i=0;
my @tmp;
open (FR, $fichier) or die "Fichier des radios non trouvé;.\n";
while( <FR> ) {
if ( $_ =~ /[#*]/ ) {
# Un commentaire? On passe!
} else {
@tmp = split (/,/);
$radio[$i] = $tmp[0] ;
$adresse[$i] = $tmp[1];
chomp($adresse[$i]);
print "$i: $radio[$i] -> $adresse[$i]<\n";
$i++;
}
}
close FR;
}
et voici le fichier des radio:
FranceInter , http://viphttp.yacast.net/V4/radiofrance/franceinter_hd.m3u
FranceInfo , http://ogg.tv-radio.fr:1441/encoderfinfo.ogg
FranceCulture , http://viphttp.yacast.net/V4/radiofrance/franceculture_hd.m3u
FranceMusique , http://viphttp.yacast.net/V4/radiofrance/francemusique_hd.m3u
France Info , http://viphttp.yacast.net/V4/radiofrance/franceinfo_bd.m3u
FIP-TheBest!!! , http://viphttp.yacast.net/V4/radiofrance/fip_hd.m3u
LeMouv , http://viphttp.yacast.net/V4/radiofrance/lemouv_hd.m3u
Le Mouv , http://viphttp.yacast.net/V4/radiofrance/lemouv_hd.m3u
France Vivace , http://viphttp.yacast.net/V4/radiofrance/francevivace_hd.m3u
France Bleu Ile-de-France , http://viphttp.yacast.net/V4/radiofrance/francebleu_idf_hd.m3u
Rémi.