Introduzione
Ciao, quelli che vi presento sono due piccoli "script" che permettono di avere una interfaccia minimale per ascoltare alcune radio on-line.
Li ho scritti ieri pomeriggio nell'intento di imparare un minimo di programmazione in bash e per avere una "radio" minimale, ma funzionale.
Gli script
Creiamo uno script nominandolo myradio-manager
#!/bin/bash
#-----------------------------------------------------------------
# Questo programma permette di aggiungere/rimuovere le stazioni
# radio contenute nel file $HOME/.myradiorc.
#-----------------------------------------------------------------
#
#-----------------------------------------------------------------
# Variabile file $HOME/.myradiorc .
if [ -f $HOME/.myradiorc ]
then
LISTA_RADIO=$HOME/.myradiorc
MAX_ID=`wc -l $LISTA_RADIO | cut -d' ' -f1`
else
touch "$HOME/.webradiorc"
LISTA_RADIO=$HOME/.myradiorc
MAX_ID=0
fi
#-----------------------------------------------------------------
VERO=1
#-----------------------------------------------------------------
# Funzione per aggiungere una stazione radio.
add_radio()
{
NEW_ID=`echo "$MAX_ID+1"|bc`
MAX_ID=$NEW_ID
if [ "$NEW_ID" -le 9 ]
then
echo "0$NEW_ID|$NOME_RADIO|$INDIRIZZO_RADIO">>$LISTA_RADIO
else
echo "$NEW_ID|$NOME_RADIO|$INDIRIZZO_RADIO">>$LISTA_RADIO
fi
}
#-----------------------------------------------------------------
# Funzione per rimuovere una stazione radio.
rm_radio()
{
grep -v $RM_ID"|" .myradiorc > .tmp1_myradiorc
colrm 1 2 < .tmp1_myradiorc > .tmp2_myradiorc
rm .tmp1_myradiorc
nl -n rz -s "" -w 2 .tmp2_myradiorc > .myradiorc
rm .tmp2_myradiorc
}
#-----------------------------------------------------------------
# Funzione che elenca le radio disponibili.
lista_radio()
{
echo " Id Radio"
echo "----------------------"
cat $LISTA_RADIO | awk -F '|' '{ print "[\033[31m " $1 "\033[0m ] : " $2}'
}
#-----------------------------------------------------------------
while [ "$VERO" -eq 1 ]
do
clear
echo "[ 1 ] : Aggiungi una radio alla lista"
echo "[ 2 ] : Rimuovi una radio dalla lista"
echo "[ 3 ] : Esci"
echo
echo -n "Operazione da effettuare: "
read ID
case "$ID" in
1)
echo -n "Nome della radio: "
read NOME_RADIO
echo -n "Indirizzo della radio: "
read INDIRIZZO_RADIO
add_radio
;;
2)
if [ "$MAX_ID" -gt 0 ]
then
lista_radio
echo -e "[\033[34m 00 \033[0m] : Esci."
echo
echo -n "Inserire l'ID della radio da rimuovere: "
read RM_ID
if [ "$RM_ID" -ge 1 ] && [ "$RM_ID" -le "$MAX_ID" ]
then
rm_radio
MAX_ID=`echo "$MAX_ID-1"|bc`
else
if [ "$RM_ID" -ne 0 ]
then
echo "`pwd`/`basename $0` - Errore: ID non valido."
sleep 3
fi
fi
else
echo "Il file $LISTA_RADIO e' vuoto."
echo "Impossibile rimuovere radio."
sleep 3
fi
;;
3)
let VERO=0
;;
*)
echo "`pwd`/`basename $0` - Errore: codice non valido."
sleep 3
;;
esac
done
clear
Creiamo uno script nominandolo myradio-player
#!/bin/bash
#-----------------------------------------------------------------
# Questo programma permette di ascoltare la radio da terminale
# tramite un qualsiasi riproduttore multimediale (mplayer e'
# quello predefinito). La lista delle radio e' contenuta nel file
# $HOME/.myradiorc.
# E' possibile aggiungere e togliere le stazioni radio modificando
# direttamente il file o tramite il programma myradio-manager.
#-----------------------------------------------------------------
#
#-----------------------------------------------------------------
# Variabile del riproduttore multimediale.
# mplayer
if ! PLAYER=`which mplayer`
then
echo "`pwd`/`basename $0` - Errore: il riproduttore mplayer non esiste."
exit 1
fi
# vlc
#if ! PLAYER=`which vlc`
# then
# echo "`pwd`/`basename $0` - Errore: il riproduttore vlc non esiste."
# exit 1
#fi
#-----------------------------------------------------------------
# Variabile modalita' "silenziosa".
# mplayer
QUIET="-really-quiet"
# vlc
#QUIET="-I rc"
#-----------------------------------------------------------------
# Variabile file $HOME/.myradiorc .
if [ -f $HOME/.myradiorc ]
then
LISTA_RADIO=$HOME/.myradiorc
else
echo "`pwd`/`basename $0` - Errore: il file $HOME/.myradiorc non esiste."
echo "Utilizzare il programma myradio-manager per crearlo."
exit 1
fi
#-----------------------------------------------------------------
VERO=1
MIN_ID="01"
MAX_ID=`wc -l $LISTA_RADIO | cut -d' ' -f1`
#-----------------------------------------------------------------
# Funzione che elenca le radio disponibili.
lista_radio()
{
echo " Id Radio"
echo "---------------------------"
cat $LISTA_RADIO | awk -F '|' '{ print "[\033[31m " $1 "\033[0m ] : " $2}'
echo "---------------------------"
echo -e "[\033[34m 00 \033[0m] : Esci."
}
#-----------------------------------------------------------------
# Funzione che riproduce la radio selezionata.
play_radio()
{
INDIRIZZO=`grep ^$1 $LISTA_RADIO | awk -F '|' '{ print $3 }'`
$PLAYER $QUIET $INDIRIZZO
}
#-----------------------------------------------------------------
while [ "$VERO" -eq 1 ]
do
clear
lista_radio
echo
echo -n "Numero della radio: "
read ID
if [ "$ID" -ge "$MIN_ID" ]&& [ "$ID" -le "$MAX_ID" ]
then
play_radio $ID
else
if [ "$ID" -eq 0 ]
then
let VERO=0
else
echo "`pwd`/`basename $0` - Errore: codice della radio non valido."
sleep 3
fi
fi
done
clear
Rendiamo eseguibili i due file appena creati tramite il comando
$ chmod +x myradio-manager myradio-player
Vi consiglio di salvare i file sopra nella directory $HOME/script e di aggiungerla al vostro PATH per rendere piu' comodo l'utilizzo degli "script".
Utilizzo
A questo punto avete i due file myradio-player e myradio-manager, il primo come avrete intuito serve ad ascoltare la radio, il secondo a gestire la playlist delle radio stesse che e' contenuta nel file ~/.myradiorc.
Il file ~/.myradiorc
Questo file si genera tramite lo script myradio-manager, per comodita' riporto anche quello che mi sono creato con alcune radio italiane
Introduzione
Il codice e' commentato, l'unica cosa che serve e' un player multimediale.
Spero che a qualcuno possa tornare utile, per eventuali suggerimenti e miglioramenti fatemi sapere, sono alle prime armi con il bash!!
Marco
Commenti
Errata
Non so come fare per correggere la guida, quindi riporto le correzioni qui:
1) In entrambi gli script ci sono due righe con simboli strani, in realta' le righe devono essere come segue (spero che ora siano visualizzate correttamente, la mia anteprima e' corretta!!):
cat $LISTA_RADIO | awk -F '|' '{ print "[\033[31m " $1 "\033[0m ] : " $2}'
echo -e "[\033[34m 00 \033[0m] : Esci."
2) la riga
INDIRIZZO=`grep $1 $LISTA_RADIO | awk -F '|' '{ print $3 }'`
deve essere sostituita con
INDIRIZZO=`grep ^$1 $LISTA_RADIO | awk -F '|' '{ print $3 }'`
3) il titolo dell'ultimo paragrafo dovrebbe essere Concusioni :)
Scusate ancora, e se qualcuno sa come sia possibile correggere la guida mi faccia sapere!!
Re: Errata
Ho corretto io la guida. Controlla se va bene, in caso contrario fammi un fischio.
Grazie del contributo!
Pietro
Re: Errata
Grazie Pietro, ora mi sembra corretta!
Ciao ciao
Re: Errata
Marcos83, apparentemente il tuo script richiede qualcosa che non ho, preciso che uso Ubuntu Hardy ed ascolto sovente la radio immettendo un url di questo tipo:
mplayer mms http://live.mediaserver.kataweb.it/radiodeejay
nel terminale, ho provato il tuo script e mi da un errore socket:
Questo appare durante l'ascolto, in corrispondenza di tagli del segnale (ho una connessione che mi vergogno a chiamare "adsl"..)
La radio si ascolta, quindi lo script funziona, ma non capisco troppo i due errori.
Se serve io sono nattato alla grande :-(
acc. ho visto adesso qualcosa disimile quando lo avvio con il mio comando:
mplayer c'è e funziona :-o
Re: Errata
Ciao, prima di tutto sono contento che qualcuno li abbia provati :)
Per altri problemi con mplayer ti direi di aprire un post e non chiedere qui, comunque:
Per il primo "errore"
Quote:
mplayer: could not connect to socket
mplayer: No such file or directory
risolvi aggiungendo nel file ~/.mplayer/config
Quote:
nojoystick=1
nolirc=1
ti servirebe solo il secondo, ma per sicurezza :)
Per il secondo non so perche' non mi e' mai capitato, ma in google ho visto che c'e' parecchio!
Ciao
respond this topic
I had got a dream to start my organization, but I did not earn enough of cash to do that. Thank goodness my dude told to take the mortgage loans. Hence I took the college loan and made real my old dream.