Archivo de Septiembre 2007

h1

Problema de teclado en tightvncserver y gnome

30/09/2007

Si al instalar tightvncserver, vino o vncserver sobre una versión actual de Gnome se produce una desconfiguración del teclado al acceder por vnc (mientras que en sesión local, ssh u otras funciona correctamente) talque al escribir por ejemplo “asd” lo interpreta como “abf”, se puede corregir (mientras se espera que incluyan una solución oficial los desarrolladores) de la siguiente manera:

1.- Ejecutar /usr/bin/gconf-editor(mediante la navegación con el ratón por los directorios del sistema con Nautilus).

2.- Buscar la entrada /desktop/gnome/peripherals/keyboard/kbd

3.- Editar la entrada “layouts”, borrando todos sus valores y dejando sólo uno incorrecto (si sólo existe uno US-145 por ejemplo, cambiarlo por “asd” por ejemplo).

4.- Cerrarlo y reiniciar.

El método no es muy ortodoxo pero soluciona el problema temporalmente. Fuente.

h1

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

23/09/2007

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 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.

# 1º parámetro:  programa a grabar ,así si se introduce “Ondacero” el resultado será “Ondacero_10_11_2005.ogg”, mientras que si se introduce LaRosaDeLosVientos quedará “LaRosaDeLosVientos_10_11_2005.ogg”. Para indicar un programa concreto hay que especificarlo en el script.
# 2º parámetro: minutos a grabar desde el arranque del script.

#Un tercer parámetro, opcional, es el directorio donde grabarlo. Si no se especifica nada, graba en el directorio actual.

# 1º) Comprobar que Streamripper está presente:

which streamripper > /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:

#meter tb OndaMadrid, el programa d Pedro Santos, fines de semana por la mañana.

#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

josemi* | JOSEMI* )
echo “Josemi Rodríguez Sieiro en HErrera en la Onda, Ondacero”
emisora=ms://ondacerolivewm.fplive.net/ondacerowmlive-live/oc_convencional
software=mimms
#horaInicio=11:05
#horaFinal=11:32
minutos=27
programa=Josemi
;;

rosav* | ROSAV* | larosa* | LAROSADE* )
echo “La Rosa de los Vientos, Juan Antonio Cebrián, Ondacero”
emisora=ms://ondacerolivewm.fplive.net/ondacerowmlive-live/oc_convencional
software=mimms
minutos=150
#horaInicio=1:30
#horaFinal=4:00
programa=LaRosaDeLosVientos
;;
ondace* | ONDACE* )
echo “Ondacero”
emisora=ms://ondacerolivewm.fplive.net/ondacerowmlive-live/oc_convencional
software=mimms
minutos=$2
programa=Ondacero
;;

alas12enpunto* | alasdoceenpunto* | ALASDOCEENPUNTO* | ALAS12ENPUNTO* | Alasdosceenpunto* | Alas12enpunto* )
echo “Puntoradio”
emisora=http://streaming.puntoradio.com  #<- esto no lo pilla el mimms, hay que utilizar Mplayer
software=streamripper
programa=Alas12enPunto
minutos=90
;;

lucesenlaoscuridad* | LUCESENLAOSCURIDAD* | LucesEnLaOscuridad* | Lucesenlaoscuridad* )
echo “Luces en la oscuridad, Pedro Ribas, Puntoradio”
emisora=http://streaming.puntoradio.com
software=streamripper
programa=LucesEnLaOscuridad
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
;;

SERCONSUM* | serconsum* | SERconsum* | Serconsum* | SERConsum* )
echo “SER Consumidor, Jesús Soria”
emisora=mms://a874.l784138873.c7841.e.lm.akamaistream.net/D/874/7841/v0001/reflector:38873
minutos=55    #El prog. peude empezar aprox. a las 6:05, así nos quitamos los informativos.
software=mimms
programa=SERconsumidor
;;

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
;;

ELCINEDELOQUEYO* | elcinedeloqueyo* | Elcinedeloqueyo* | ElCineDeLoQue*  )
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
;;

SERCURI* | sercuri* | SERCuri* | SERcuri* | serCuri*  )
echo “SER Curiosos, Alberto Granados”
emisora=mms://a874.l784138873.c7841.e.lm.akamaistream.net/D/874/7841/v0001/reflector:38873
minutos=55
software=mimms
programa=SERcuriosos
;;

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
;;

ondaceroandalucia | ONDACEROANDALUCIA | OndaceroAndalucia | Ondaceroandalucia | OCAnd*  | OCand*  )
echo “Ondacero Andalucía “
emisora=mms://a536.l507220547.c5072.e.lm.akamaistream.net/D/536/5072/1006357674/reflector:20547
software=mimms
programa=OndaceroAndalucia
;;

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.
;;

ESTOESVIDA* | EstoEsVida* | estoesvida* | Estoesvida* )
echo “Esto es Vida, Pedro Santos”
emisora=mms://a1644.l1904942498.c19049.e.lm.akamaistream.net/D/1644/19049/v0001/reflector:42498
software=mimms
dia_sem=`date +%u` #Como este programa tiene 4h los sábados y 3 los domingos, hacemos una pequeña adaptación
if   [ "$dia_sem" == "6" ] ; then
minutos=235
elif [ "dia_sem" == "7" ] ; then
minutos=175
fi
programa=”EstoEsVida”
;;

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      # <- esto funciona?
exit 0
;;

#     |  |  |  |  |  )
#        echo ” “
#        emisora=
#        software=streamripper
#                programa=
#        ;;

esac

#si $2 -eq ”
#    horaInicio = $2
#else
#echo y exit

#si $3 -eq ”
#    horaFinal = $3
#else
#    echo y exit

#comprobar parámetro 2: debe ser un nº entero.
#if [ HoraFinal - HoraInicio" != "" ] ; then
#    echo “hay algo”
#    if [ (horaFinal - horaInicial) > 0 ] ; then
#        minutos=$2
#        echo $minutos
#    else
#
#        echo “Tiempo insuficiente, mínimo 1 minuto”
#        echo “- Error 2: Tiempo insuficiente, mínimo 1 minuto, introducido: “$2 > /var/log/grabar_radio.log
#        exit 0
#    fi
#else
#    echo “No se ha indicado tiempo”
#    exit 0
#fi

# Tercer parámetros: 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

# Nombre del fichero

#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
if [ "$software" == "streamripper" ] ; then
nombre=${dir}/”$programa”_20`date +%d_%m_%y`.mp3
segundos=`expr 60 \* $minutos`
streamripper $emisora -l $segundos -a $nombre -d $dir

elif [ "$software" == "mimms" ] ; then
nombre=${dir}/”$programa”_20`date +%y_%m_%d`.asf
#mimms -t $minutos $emisora $nombre
segundos=$(($minutos*60))
mplayer -noframedrop -dumpfile $nombre -dumpstream $emisora -endpos $segundos
fi

#Averigurar si este comando permite modificar el “-ao pcm” por un “-ao ogg”, sería casi perfecto (seguiría faltando el tema del tiempo)
sync

#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.

# EL COMANDO MIMMS directamente q te deja elegir el nº d minutos directamente, pero lo graba en ASF y OGGENC no lo digiere.
#habría que pasarlo luego a MP3 o WAV y luego a OGG, con lo que se perdería calidad en el camino (y eficiencia). Además, no deja grabar servidores que utilicen otros protocolos diferentes a MMS.

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_convencional
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”

h1

Convertir SWF en AVI y salvar videos de Youtube

11/09/2007

Era inevitable hablar algún dia de esto… En Linux se pueden dar ambos casos:

1º) Querer salvar un video de Youtube, para lo cual

1.1 Descargar el video a a través de YouTubeX o cualquier otro gestor de descargas de Youtube, obtenido un fichero tipo “get_video” de formato flv.

1.2 Convertirlo de flv a avi mediante el comando:

ffmpeg -i get_video miVideo.avi

2º) Cuando se tiene una animación en Flash en formato SWF, es necesario pasarla primero a FLV y posteriormete a AVI como ya hemos visto. Para ello:

2.1 Descargar PyVNCwSWF ,descomprimir e instalarlo.

2.2 Ejecutarlo:

carlos@pushit:~/Desktop/pyvnc2swf/pyvnc2swf-0.8.2.1/pyvnc2swf$ ./edit.py -o out.mpg get_video.swf
Using PIL 1.1.5
MPEGVideoStream is not supported.

produciendo este error que se arregla instalando la librería PyMedia (enlace a .deb) así como otras dependencias (Python 2.4 y Pygame). Después ya solo queda convertir según el formato de salida que queramos.

$ edit.py -o out.mpg input.swf

$ edit.py -o out.flv input.swf

Nota: este método solo vale para Versiones Flash 7.0 o superiores.