h1

Programar la grabación de emisoras de radio online mediante el cron

23/09/2007

Update Jan/2012:
– Conversión de todo lo grabado a Ogg. Es necesario instalar el paquete “pacpl“.

Update Dic/2011:
– correcciones en la grabación de protocolos MMS para no grabar más de lo previsto.
– Actualización de algunas emisoras de radio y programas.
– Limpieza del código.

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

2º) Grabar el programa “Josemi”

#./grabar_radio.sh josemi

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:


echo "Josemi Rodríguez Sieiro en HErrera en la Onda, Ondacero"
emisora=mms://ondacerolivewm.fplive.net/ondacerowmlive-live/oc_madrid
software=mimms
#horaInicio=11:05
#horaFinal=11:32
minutos=27
programa=Josemi

Se puede modificar el script a voluntad.

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:


#sudo crontab -e

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

Actualización 2009/10/03:
– Corrección de la URL de Ondacero.
– Sustitución de “mimms” por “mplayer”

Actualización 2011/12/11:
– Corrección de la URL de Ondacero (oc_convencional -> oc_madrid).
– Añadido Ondacero Galicia.

Anuncios

9 comentarios

  1. Hola. Te felicito por el post. A ver, estoy usando MINT, recién instaladita, que por cierto es una joya. Cuando ejecuto el script después de haber instalado mimms, me dice:

    ./radio.sh: line 291: /var/log/grabar_radio.log: Permiso denegado

    ¿Qué ocurre?

    Gracias


  2. Hola,

    el problema parece estar en que no puedes escribir en ese fichero. La ruta /var/log generalmente solo es “escribible” por el usuario root. Soluciones:

    a) Que ejecutes el script como root (sudo ./radio.sh etc etc)

    b) Que cambies esa ruta a algo así tipo /home/joseluis/logDeLaRadio.log

    saludos.


  3. Ok. Lo prueba. Gracias por la respuesta tan rápida. Aquí http://joseluisredon.wordpress.com deliro un poco; por si quieres visitarme.


    • There’s a terrific amount of knegoldwe in this article!


  4. Cuando lo ejecuto como root contesta:

    “Emisora no reconocida, disponibles: “


  5. Muy bueno el script


  6. las siguientes líneas

    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

    se podrían cambiar por:
    echo “Grabación de ” $nombre “realizada con éxito”
    echo “Grabación de ” $nombre “realizada con éxito “>> /var/log/grabar_radio.log

    lo del pwd no va, vamos, siempre dice el directorio actual, a menos ejecutándolo a mano
    y lo de >> en lugar de > para que lo añada al log, de la otra forma cada vez escribes el log desde cero.

    lo he probado y va de maravilla, gracias.
    Inco.


  7. Juraría que streamripper no funciona con mms.

    Se puede usar mplayer -dumpstream y creo que también vlc.


  8. A perfect reply! Thanks for taking the trbleuo.



Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: