Una utilidad que uso a menudo es la grabación online de emisoras de radio (Ondacero, Puntoradio, etc), mediante la programación de esta tarea en el cron.
Para ello hago uso de este script: (salvarlo en un fichero de texto y darle permiso de ejecución)
#!/bin/bash
# Script para la grabacion de un programa de radio por internet.
# 1º) Idea original de http://www.tabernadelturco.com)
# 2º) Modificación de Pplux (www.pplux.com)
# 3º) Modificación actual: Carlos Gacimartín (cgacimartin@gmail.com)
#PARÁMETROS:
#grabar_radio ondacero 120 <- graba Ondacero durante 120 minutos a partir de su ejecución inmediata, por lo que se programa desde el cron.
#grabar_radio julianenlaonda 120 /dev/null #El valor devuelto (0, 1 o 2) se guarda automáticamente en $?
if [ $? -ne 0 ] ; then
echo «- Error 3: Streamripper no encontrado. Por favor instale ‘Streamripper’ para poder ejecutar correctamente la grabación»
echo «- Error 3: Streamripper no encontrado. Por favor instale ‘Streamripper’ para poder ejecutar correctamente la grabación» >> /var/log/grabar_radio.log
exit 0
fi
which mimms > /dev/null #El valor devuelto (0, 1 o 2) se guarda automáticamente en $?
if [ $? -ne 0 ] ; then
echo «- Error 3: mimms no encontrado. Por favor instale ‘mimms’ para poder ejecutar correctamente la grabación»
echo «- Error 3: mimms no encontrado. Por favor instale ‘mimms’ para poder ejecutar correctamente la grabación» >> /var/log/grabar_radio.log
exit 0
fi
#Sanear entrada, comprobar que al menos están los dos parámetros requeridos y son válidos:
#Comprobar parámetro 1: Comprar con los valores posibles:
#La hora la establece el propio script si el programa es conocido y no se ha indicado ninguna (ej: GOmaespuma, que va de 16:00 a 19:00 y no hace falta que el usuariola introduzca)
#variable software: como Streamripper no soporta el protocolo MMS y el prog. MiMMS no soporta streaming por http, hay que incluir a los dos y utilizar el que corresponda con cada emisora.
software=streamripper
minutos=$2
case $1 in
julian* | Julia* | JULIA* )
echo «Emisora: Gomaespuma en Ondacero»
emisora=mms://ondacerolivewm.fplive.net/ondacerowmlive-live/oc_madrid
software=mimms
#horaInicio=16:00 #Ver como se maneja las horas con este formato
#horaFinal=19:00
minutos=175
programa=JuliaenLaOnda
;;
josemi* | JOSEMI* | Josemi* )
echo «Josemi Rodríguez Sieiro en Herrera en la Onda, Ondacero»
emisora=mms://ondacerolivewm.fplive.net/ondacerowmlive-live/oc_madrid
#emisora=mms://ondacerolivewm.fplive.net/ondacerowmlive-live/oc_madrid
software=mimms
#minutos=27
minutos=2
programa=Josemi.Rodriguez.Sieiro.Rodriguez.Vila.Carlos.Herrera.Onda.Cero
;;
rosav* | ROSAV* | larosa* | LAROSADE* )
echo «La Rosa de los Vientos, Juan Antonio Cebrián, Ondacero»
emisora=mms://ondacerolivewm.fplive.net/ondacerowmlive-live/oc_madrid
software=mimms
minutos=150
#horaInicio=1:30
#horaFinal=4:00
programa=LaRosaDeLosVientos
;;
galicia* | GALICIA* )
echo «Galicia – Alba»
emisora=mms://ondacerolivewm.fplive.net/ondacerowmlive-live/oc_santiago
software=mimms
minutos=90
#horaInicio=1:30
#horaFinal=4:00
programa=OndaceroGalicia
;;
ondace* | ONDACE* )
echo «Ondacero»
emisora=mms://ondacerolivewm.fplive.net/ondacerowmlive-live/oc_madrid
software=mimms
minutos=$2
programa=Ondacero
;;
lucesenlaoscuridad* | LUCESENLAOSCURIDAD* | LucesEnLaOscuridad* | Lucesenlaoscuridad* )
echo «Luces en la oscuridad, Pedro Ribas, Puntoradio»
emisora=http://streaming.puntoradio.com
software=streamripper
programa=Luces.En.La.Oscuridad
minutos=210
;;
puntor* | PUNTOR* | Puntor* | PuntoR* )
echo «Puntoradio»
emisora=http://streaming.puntoradio.com
software=streamripper
programa=Puntoradio
;;
los40* | LOS40* | 40P | 40p* )
echo «Los 40 Principales»
emisora=http://a992.l783922627.c7839.e.lm.akamaistream.net/D/992/7839/v0001/reflector:22627
software=streamripper
programa=Los40principales
;;
SERDIGIT* | serdigit* | SERdigit* | Serdigit* | SERDigit* )
echo «SER Digital, Chema Lapuente»
emisora=mms://a874.l784138873.c7841.e.lm.akamaistream.net/D/874/7841/v0001/reflector:38873
minutos=25
software=mimms
programa=SERdigital
;;
Lascript* | lascript* | LaScript* )
echo «El cine de lo que yo te diga, Cadena SER»
emisora=mms://a874.l784138873.c7841.e.lm.akamaistream.net/D/874/7841/v0001/reflector:38873
minutos=120
software=mimms
programa=ElCineDeLoQueYoTeDiga
;;
SER | ser | CadenaSer | Cadenaser | cadenaSer | cadenaser )
echo «Cadena SER»
emisora=mms://a874.l784138873.c7841.e.lm.akamaistream.net/D/874/7841/v0001/reflector:38873
software=mimms
programa=CadenaSER
;;
m80 | M80 )
echo «M80»
emisora=http://a624.l857421577.c8574.e.lm.akamaistream.net/D/624/8574/v0001/reflector:21577
software=streamripper
programa=M80
;;
Cadenadial | cadenadial | CadenaDial | cadenaDial )
echo «Cadena Dial «
emisora=http://a371.l1136133678.c11361.e.lm.akamaistream.net/D/371/11361/v0001/reflector:33678
software=streamripper
programa=CadenaDial
;;
MaximaFM | MaxFM | maximafm | maximaFM | maxfm | Maximafm )
echo «Maxima FM «
emisora=http://a225.l857520540.c8575.e.lm.akamaistream.net/D/225/8575/v0001/reflector:20540
software=streamripper
programa=MaximaFM
;;
rne1 | rneradio1 | RNE1 | RNEradio1 | RNERadio1 )
echo «Radio Nacional de España Radio 1 «
emisora=http://a729.l830022151.c8300.e.lm.akamaistream.net/D/729/8300/v0001/reflector:22151
software=streamripper
programa=RNE1
;;
rneradioclasica | RNEradioclasica | RNERadioClasica | radioclasica | RadioClasica | radioClasica | Radioclasica )
echo «Radio Nacional de España Radio Clásica «
emisora=http://a1247.l910622804.c9106.e.lm.akamaistream.net/D/1247/9106/v0001/reflector:22804
software=streamripper
programa=RNE_RadioClasica
;;
rneradio3 | RNEradio3 | RNERadio3 | radio3 | Radio3 )
echo «Radio Nacional de España Radio 3 «
emisora=http://a1830.l830120550.c8301.e.lm.akamaistream.net/D/1830/8301/v0001/reflector:20550
software=streamripper
programa=RNE_Radio3
;;
rneradio4 | RNEradio4 | RNERadio4 | radio4 | Radio4 )
echo «Radio Nacional de España Radio 4 «
emisora=hmms://a783.l1041530780.c10415.e.lm.akamaistream.net/D/783/10415/v0001/reflector:30780
software=mimms
programa=RNE_Radio4
;;
rneradio5 | RNEradio5 | RNERadio5 | radio5 | Radio5 )
echo «Radio Nacional de España Radio 5»
emisora=http://a1360.l910520572.c9105.e.lm.akamaistream.net/D/1360/9105/v0001/reflector:20572
software=streamripper
programa=RNE_Radio5
;;
rneradioexteriordeespaña | RNEradioexter* | radionacionaldeespañaradioext* | radioexter* | RadioExt* | Radioext* )
echo «Radio Nacional de España Radio Exterior»
emisora=http://a259.l773120483.c7731.e.lm.akamaistream.net/D/259/7731/v0001/reflector:20483
software=streamripper
programa=RNE_radioexterior
;;
RadioMarca | radiomarca | Radiomarca | radioMarca | Marca | marca )
echo «Radio Marca «
emisora=mms://wmedia.recoletos.es/radiomarca
software=mimms
programa=RadioMarca
;;
Cadena100 | cadena100 | cad100 | c100 | cadenacien | CadenaCien | cadenaCien | Cadenacien )
echo «Cadena 100 «
emisora=mms://live.c100.edgestreams.net/reflector:34743
software=mimms
programa=Cadena100
;;
COPE | cope | Cope | CadenaCop* | CadenaCOP* | cadenacope |CADENACOPE )
echo «COPE «
emisora=mms://live.cope.edgestreams.net/reflector:34744
software=mimms
programa=COPE
;;
EuropaFM | europaFM | Europafm | europafm )
echo «Europa FM «
emisora=mms://a1537.l507234296.c5072.e.lm.akamaistream.net/D/1537/5072/v0001/reflector:34296
software=mimms
programa=EuropaFM
;;
mqm* | MQM* | Mqm* )
echo «MQM Dance «
emisora=http://win20ca.audiovideoweb.com/avwebwinlive8161
software=streamripper
programa=MQMDance
;;
Kiss* | KISS* | kiss*)
echo «Kiss FM «
emisora=http://win60ny.audiovideoweb.com/ny60winlive7001?WMThinning=0
software=streamripper
programa=KissFM
;;
RadioEusk* | RADIOEUSK* )
echo «Radio Euskadi»
emisora=mms://a943.l881320881.c8813.e.lm.akamaistream.net/D/943/8813/v0001/reflector:20881
software=mimms
programa=RadioEuskadi
;;
OnaC* | onac* | ONAC* )
echo «Ona catalana» #Para los más susceptibles, catalana va en minúculas al no ser nombre propio. Debería ser Cataluña, Euskadi, Madrid…
emisora=mms://217.11.251.145/onacatalana
software=mimms
programa=»OnaCatalana» #Para los más susceptibles, aquí si que «Catalana» va en mayúsculas para facilitar la identificación.
;;
OndaMadrid | Ondamadrid | ondamadrid | ondaMadrid | ONDAMADRID )
echo «Onda Madrid»
emisora=mms://a1644.l1904942498.c19049.e.lm.akamaistream.net/D/1644/19049/v0001/reflector:42498
software=mimms
programa=»OndaMadrid»
;;
* )
echo «Emisora no reconocida, disponibles: «
echo «- Error 1: Emisora o programa desconocido: «$1 > /var/log/grabar_radio.log # /var/log/grabar_radio.log
exit 0
;;
esac
# Tercer parámetro: tiempo a grabar.
#Directorio donde grabarlo (’.’ = actual) Como por cada minuto se utiliza 1mega de espacio, en un futuro se puede comprobar el espacio en el destino para avisar de si se podrá salvar o no.
if [ «$3» != «» ]; then
dir =$3
else
dir=/home/carlos/radio
fi
#Convertirlo en OGG, estándar superior al ASF y MP3, mayor compresión y calidad, de código fuente abierto y gratuito. Actualmente todos los reproductores ya incluyen este formato, y los que su firmware es actualizable suelen disponer de una actualización para poder reproducirlo.
sync
segundos=`expr 60 \* $minutos`
if [ «$software» == «streamripper» ] ; then
nombre=${dir}/»$programa»_20`date +%y_%m_%d`.mp3
streamripper $emisora -l $segundos -a $nombre -d $dir
elif [ «$software» == «mimms» ] ; then
nombre=${dir}/»$programa»_20`date +%y_%m_%d`.asf
#mplayer’s «endpos» options is not working in this version for streams, so applying workaround
mplayer -really-quiet -nolirc -noframedrop -dumpfile $nombre -dumpstream $emisora &
PID=»$!»
sleep «${segundos}»
kill «${PID}»
fi
sync
pacpl -t ogg $nombre
#OTRAS OPCIONES SON:
#mplayer -dumpstream salida mms://a17.l507220396.c5072.e.lm.akamaistream.net/D/17/5072/1006358696/reflector:20396
#para el tema de la calidad de sonido, lo saca en ASF.
echo «Grabación de » $nombre «realizada con éxito y guardada en » $PWD
echo «Grabación de » $nombre «realizada con éxito y guardada en » $PWD > /var/log/grabar_radio.log
#Añadir opción de mandar el fichero por SCP u otro medio a otro ordenador.
Como se ve, los comandos son muy sencillos, indicándose la emisora y el nº de minutos a grabar, nada más, empezando a grabar en cuanto se ejecutase el script. Conectaría con la emisora online según el protocolo (stream o mms) e iría guardando la emisión (en MP3 y ASF respectivamente). Ejemplos:
1º) Grabar la emisora Ondacero durante 10 minutos.
#./grabar_radio.sh Ondacero 10
En este segundo caso se puede ver la personalización de un programa, modificando el script. Éste ya sabe la cantidad de minutos a salvar y con qué nombre guardarlo:
Por ultimo, la gran utilidad de esto es poder grabar las emisiones sin que tengamos que intervenir, igual que se hace con un DVD o VHS. Para ello se puede utilizar el cron:
Añadiendo una línea por cada programa que se desee grabar. Para entender el programador de tareas de GNU/Linux Cron se puede consultar este enlace.. Dos ejemplos de programaciones serían:
Grabación de Ondacero (lo que estén emitiendo) durante diez minutos los sábados y domingos a la 1:30 am.
30 01 * * 7,1 /home/carlos/radio/grabar_radio.sh Ondacero 10
Grabación del programa de Josemi de lunes a viernes a las 12:07pm.
07 12 * * 1-5 /home/carlos/radio/grabar_radio.sh josemi