Radio.sh è uno script che permette di gestire ed ascoltare le stazioni radio in streaming su Lubit.
Quello che vi stiamo presentando oggi è la versione 2 del "programma"; infatti sono state accolte le richieste di alcuni lettori.
In questa seconda versione sono state aggiunte nuove stazioni e, inoltre, quando si preme INVIO, non si esce più dallo script, come succedeva nella versione 1, ma si ritorna alla schermata principale.
Per quanto riguarda l'integrazione di "Radio v. 2.0" nel menu di Lubit, vi rimando al post precedente. Qui.
#!/bin/bash
#Radio.sh versione 2.0
#Bit&Squit ;)
function avviso(){
clear
echo -e "\nPer ritornare alla schermata principale premere INVIO\n"
sleep 2
}
#Rtl [1]
Stazione1="http://shoutcast.rtl.it:3010/"
#Radio Deejay [2]
Stazione2="http://mp3.kataweb.it:8000/RadioDeejay"
#Radio Kiss Kiss [3]
Stazione3="http://wma08.fluidstream.net:4610/"
#Radio RDS [4]
Stazione4="http://www.rds.it:8000/stream"
#Radio Capital [5]
Stazione5="mms://wm.streaming.kataweb.it/reflector:44434"
#Radio latte e miele [6]
Stazione6="mms://onair4.xdevel.com/LatteMiele"
#Radio 105 [7]
Stazione7="http://shoutcast.unitedradio.it:1101"
#RMC[8]
Stazione8="http://shoutcast.unitedradio.it:1103"
PLAYER=$(which mplayer 2>/dev/null)
opzione=0
uscita=9
while [ $opzione -ne $uscita ];do
opzione=$(zenity --title="Radio v. 2.0" \
--width=340 \
--height=315 \
--list --radiolist \
--text 'Seleziona una stazione' \
--column 'Seleziona' \
--column 'Menu' --column "Radio" FALSE "1" "RTL" FALSE "2" "Radio Deejay" FALSE "3" "Radio Kiss Kiss" \
FALSE "4" "RDS" FALSE "5" "Radio Capital" FALSE "6" "Radio latte e miele" \
FALSE "7" "Radio 105" FALSE "8" "RMC" FALSE "9" "Esci dal programma")
if [[ $opzione -ge 1 && $opzione -le 9 ]]; then
case $opzione in
1)
avviso
"$PLAYER" 2>/dev/null "$Stazione1" ;;
2)
avviso
"$PLAYER" 2>/dev/null "$Stazione2" ;;
3)
avviso
"$PLAYER" 2>/dev/null "$Stazione3" ;;
4)
avviso
"$PLAYER" 2>/dev/null "$Stazione4" ;;
5)
avviso
"$PLAYER" 2>/dev/null "$Stazione5" ;;
6)
avviso
"$PLAYER" 2>/dev/null "$Stazione6" ;;
7)
avviso
"$PLAYER" 2>/dev/null "$Stazione7" ;;
8)
avviso
"$PLAYER" 2>/dev/null "$Stazione8" ;;
9)
clear
exit 0 ;;
esac
else
clear
opzione=9
echo -e "\nNon è stata trovata alcuna stazione.\n"
fi
done
Alla prossima :)
Un suggerimento (appena testato): la variable indirection in bash. Ad esempio:
RispondiElimina$ a=1; b=2; st_1=ciao; st_2=pippo; c=st_$a; echo ${!c}
$ ciao
Nel vostro caso quindi: stazione_completa=stazione$opzione e poi "$PLAYER" 2>/dev/null "${!stazione_completa}"
In questo modo basterebbe allungare la lista di radio senza dover aggiungere anche le corrispondenti voci al "case... esac" (che non serve più).
Certo rimarrebbe da modificare a manina il menu di zenity ma penso che anche lì qualcosa si possa fare magari con un ciclo for che legga la coppia (Nome / url) opportunamente formattata per tutte le radio.
Non ho capito una cosa... Non servirebbe più il costrutto CASE?
EliminaEsatto. Per esempio:
Elimina#!/bin/bash
read -p "Numero opzione > " optnum
string="st"$optnum
st1="RMC^URL_RMC"
st2="Deejay^URL_Deejay"
st3="R101^URL_R101"
nomeradio=$(echo ${!string} | cut -d^ -f1)
url_radio=$(echo ${!string} | cut -d^ -f2)
echo "Stai ascoltando:" $nomeradio
echo '$PLAYER' $url_radio
exit
###
Devi solo costruire la lista di radio (nel mio esempio formattata come Nomeradio^URL). Ancora più facile se hai la lista salvata in un file esterno che lo script legge sfruttando il parametro "optnum":
string=$(sed -n ${optnum}p lista_radio) e poi con 'cut -d^ -fX' (o awk, mi pare impostando IFS=carattere_separatore) tiri fuori i due "pezzi" del nome e url radio da passare alla riga di comando $player.
Rimane il "problema" di generare la lista visualizzata da zenity ma ad occhio direi che anche qui awk o sed applicati sul file lista_radio possono venirti in aiuto, magari in unione con un ciclo iterativo che legge tutti i nomi delle radio (field 1 delle righe). Una roba tipo:
lista_zenity=""
righe_file=$(wc -l lista_radio)
for ((i=1; i<=$righe_file; i++)); do lista_zenity="$lista_zenity FALSE \"$i\" \"$nomeradio\"";done
Ci penso con più calma e magari butto giù un esempio pratico, se vuoi considerare l'opportunità di "ristrutturare" un po' lo script. Altrimenti va bene così: "se hai codice che funziona non ti conviene toccarlo" mi ha scritto Juhan nel post precedente!
Grazie per il contributo! ;)
EliminaÈ sempre un piacere :-)
EliminaNon sò, se può essere utile.
RispondiEliminaSe qualcuno vuole aggiungere e/o modificare con le stazioni RAI, questi sono i relativi indirizzi da inserire:
Radio RAI 1
http://www.radio.rai.it/live/radio1.pls
Radio RAI 2
http://www.radio.rai.it/live/radio2.pls
Radio RAI 3
http://www.radio.rai.it/live/radio3.pls
Radio RAI Isoradio
http://www.radio.rai.it/live/isoradio.pls
Grazie Angelo!! :)
EliminaDatemi 5 minuti e vi propongo la versione 2.1 o 2.5 o come volete che vi piaccia :D
RispondiEliminaDaje Lightuono! update && upgrade a manetta!
EliminaCome promesso eccovi lo script modificato. Radio v2.5 ottimizzata da me ;). Sto già provando a creare un menù dinamico per Zenity, tutto questo alla versione 3.0 ;).
RispondiEliminaGodetevi il codice :)!
#!/bin/bash
#Radio.sh versione 2.5
#Bit&Squit ;)
#Versione 2.5 con ottimizzazione del codice. By Lightuono aka Toshidex
function avviso(){
clear
echo -e "\nPer ritornare alla schermata principale premere INVIO\n"
sleep 2
"$PLAYER" 2>/dev/null $opzione
}
#Rtl [1]
Stazione1="http://shoutcast.rtl.it:3010/"
#Radio Deejay [2]
Stazione2="http://mp3.kataweb.it:8000/RadioDeejay"
#Radio Kiss Kiss [3]
Stazione3="http://wma08.fluidstream.net:4610/"
#Radio RDS [4]
Stazione4="http://www.rds.it:8000/stream"
#Radio Capital [5]
Stazione5="mms://wm.streaming.kataweb.it/reflector:44434"
#Radio latte e miele [6]
Stazione6="mms://onair4.xdevel.com/LatteMiele"
#Radio 105 [7]
Stazione7="http://shoutcast.unitedradio.it:1101"
#RMC[8]
Stazione8="http://shoutcast.unitedradio.it:1103"
PLAYER=$(which mplayer 2>/dev/null)
opzione=0
while [[ $opzione != "Esci" ]];do
opzione=$(zenity --title="Radio v. 2.0" \
--width=340 \
--height=315 \
--list \
--text 'Seleziona una stazione' \
--column 'Menu' --column "Radio" "$Stazione1" "RTL" "$Stazione2" "Radio Deejay" "$Stazione3" "Radio Kiss Kiss" \
"$Stazione4" "RDS" "$Stazione5" "Radio Capital" "$Stazione6" "Radio latte e miele" \
"$Stazione7" "Radio 105" "$Stazione8" "RMC" "" "Esci dal programma" --hide-column=1)
if [[ $opzione != "" ]]; then
avviso $opzione
else
clear
opzione="Esci"
echo -e "\nNon è stata trovata alcuna stazione.\n"
fi
done
We! Mi assento un attimo e trovo tante belle cose!! :D
EliminaSinergia e partecipazione... Siamo molto contenti :)
RispondiEliminaAnche io ho fatto uno script per le radio qualche tempo fa, funziona un po' diverso, non c'è la grafica e invece di richiedere la modifica dello script per inserire le radio consente di mettere i file di playlist in una directory e se li legge da solo. Inoltre i nomi delle dir possono essere usati per categorizzare le radio.
RispondiEliminaSe vi interessa ve lo passo.
Grazie Vinnie, stiamo pensando di raccogliere gli script e i contributi proposti dalla nostra comunity e di utilizzare quelli più interessanti nei prossimi rilasci di Lubit. Se vuoi partecipare inviaci pure lo script all'indirizzo di posta elettronica del team:
RispondiEliminalubit.project@gmail.com
Ti ringrazio e ti auguro una buona serata.
Squitty - Lubit team
Ok ve l'ho inviato, spero possa tornarvi utile.
RispondiEliminaCiao :)
Grazie Vinnie, tutti gli script fanno comodo, non fosse altro per gli spunti che se ne possono trarre. E la condivisione genera appartenenza.
RispondiEliminaBuona giornata e di nuovo grazie :-)
Squitty - Lubit team
come posso mettere virgin radio
RispondiElimina