Archive for the 'Scripts' Category

Creando listas de reproducción para XMMS y MPlayer

Normalmente acostumbro a respaldar toda la información que pueda en medios de almacenamiento ópticos, sobretodo audio digital, ya sea en ficheros Ogg Vorbis o en MPEG 1 Layer 3. Desde hace poco más de un año hasta la actualidad me he acostumbrado a mantener una estructura lógica, la cual es más o menos como sigue:

/music/<nombre_artista>/<título_album>/<título_pista

Pero hace mucho tiempo no era tan organizado en cuanto a la estructura de los respaldos, entonces, la pregunta en cuestión es, ¿cómo lograr detectar la presencia de ficheros de audio digital almacenados de manera persistente en un dispositivo óptico de manera automática?

Al igual que lo expresado en la entrada Eliminando ficheros inútiles de manera recursiva, haremos uso del comando find.

Antes de entrar en detalle debo aclarar que voy a realizar una búsqueda recursiva de ficheros en el path correspondiente a mi unidad lectora de CDs. Usted debe ajustar el path por uno apropiado en su caso particular.

Si solo desea buscar ficheros MPEG 1 Layer 3:

find /media/cdrom1/ -name \*.mp3 -fprint playlist

Pero si usted acostumbra a almacenar ficheros Ogg Vorbis en conjunto con ficheros MPEG 1 Layer 3, debería proceder así:

find /media/cdrom1/ \( -name \*.mp3 -or -name \*.ogg \) -fprint playlist

El comando anterior también es aplicable para generar listas de reproducción de video digital, en cuyo caso lo único que debe cambiar es la extensión de los ficheros que desea buscar. El fichero que contendrá la lista de reproducción generada en los casos expuestos previamente será playlist.

Reproduciendo la lista generada

Para hacerlo desde XMMS es realmente sencillo, acá una muestra:

xmms --play playlist --toggle-shuffle=on

Si usted no desea que las pistas en la lista de reproducción se reproduzcan de manera aleatoria, cambie el argumento on de la opción --toggle-shuffle por off, quedando como --toggle-shuffle=off.

Si desea hacerlo desde MPlayer es aún más sencillo:

mplayer --playlist playlist -shuffle

De nuevo, si no desea reproducir de manera aleatoria las pistas que se encuentran en la lista de reproducción, elimine la opción del reproductor MPlayer -shuffle del comando anterior.

Si usted desea suprimir la cantidad de información que le ofrece MPlayer al reproducir una pista le recomiendo utilizar alguna de las opciones -quiet o -really-quiet.

Más propuestas para la campaña en contra de la gestión del CNTI

David Moreno Garza (a.k.a. Damog) se ha unido a la campaña que apoya a la Asociación de Software Libre de Venezuela (SoLVe), la cual rechaza (al igual que nosotros) el acuerdo entre IBM Venezuela y el Centro Nacional de Tecnologías de Información (CNTI).

MilMazz apoyo a SoLVe Damog nos sorprende con un script escrito en Perl que genera un botón personalizado con cierto mensaje.

Para la puesta en funcionamiento del script necesitaremos en primera instancia instalar la variante gd2 del módulo en Perl que contiene a la librería libgd, ésta última librería nos permite manipular ficheros PNG.

Tanto en Debian como en su hijo Ubuntu el procedimiento es similar al siguiente:

$ sudo aptitude install libgd-gd2-perl
$ wget http://www.damog.net/files/misc/apoyo-solve-0.1.zip
$ unzip apoyo-solve-0.1.zip
$ cd apoyo-solve-0.1
$ perl apoyo-solve.perl <text>

En donde <text> debe ser reemplazado por su nombre o el de su sitio. Seguidamente proceda a subir la imagen.

Si lo desea, puede ver los diferentes banners de la campaña en contra de la gestión actual del CNTI, únase al llamado de la Asociación de Software Libre de Venezuela (SoLVe).

Campaña CNTI vs. Software Libre

Javier E. Pérez P. planteaba en el tema HOY MARTES debemos colocar los banners y escritos sobre el caso IBM y CNTI!!!! de la lista de correos de Softwarelibre (Lista General de Discusión Sobre Software Libre) lo siguiente.

… tambien creo que seria bueno hacer una banner flotante como los hace
la fundacion make poverty history [1] el cual es un javascript que
coloca en la parte superior de la pagina una banda [2].

Después de ver el código que propone la fundación mencionada por Javier me puse a trabajar en Inkscape y The Gimp, me he basado en uno de los textos desarrollados por el profesor Francisco Palm y el resultado lo puede apreciar al principio de esta entrada o en la parte superior derecha de la página principal de este blog.

¿Desea unirse a la campaña?

Si le gusta la idea puede colocar la banda en su sitio web, solamente debe agregar el siguiente código debajo de la etiqueta <body>.

<script type="text/javascript"
src="http://www.milmazz.com/cnti/cntivssl.js"></script><noscript><a
href="http://bureado.com.ve/solve.html">http://bureado.com.ve/solve.html</a></noscript>

Además, si lo prefiere, puede descargar el trabajo que he realizado.

Actualización: Si decide usar la banda y unirse a esta campaña en contra de la gestión actual del CNTI, sería agradable que me comunicara a través de un comentario en esta entrada o por privado para conocerles y agregarles a la lista de sitios que poseen la banda.

¿Quiénes se han unido a la campaña?

Le recuerdo que: ¡cualquier sugerencia es bienvenida!.

audioconverter v0.3.1

El día de hoy me comentaba Fernando Arenas, quien me contacto vía correo electrónico, que se había percatado de un pequeño bug en el script audioconverter, específicamente cuando se realizaba la conversión del formato .wma a .mp3.

Para quienes utilizan el script, les recomiendo actualizar a la versión más reciente, audioconverter-v0.3.1. También pueden emplearlo todas esas personas que deseen probar el programa (al menos por curiosidad), cualquier comentario es bienvenido.

Espero poder traerles una nueva versión del script audioconverter en el mes de Enero, mejorando la interfaz e incluyendo algunas características que me han mencionado en el transcurso del desarrollo de la aplicación. Espero poder complacerles. De nuevo, cualquier sugerencia es bienvenida.

Referencias

Eliminando ficheros inútiles de manera recursiva

En algunos casos mientras redactamos, codificamos o trabajamos en algunos editores de texto se van generando ficheros temporales que puede irse acumulando en nuestros directorios, estos suelen ser útiles en aquellos casos en los cuales las aplicaciones terminan de manera inesperada, seguramente podremos recuperar los últimos cambios hechos al utilizar este tipo de ficheros, o en el caso de los ficheros core, nos pueden servir en aquellos casos en los cuales alguna función de nuestros programas no funciona como debería y genera una violación de segmento, los ficheros core nos pueden facilitar el análisis en la búsqueda de los posibles errores en la función.

En muchas ocasiones nos encontramos que estos ficheros temporales se encuentran dispersos en algunos directorios y el hecho de borrarlos uno a uno suele ser un proceso más bien tedioso. Por la razón mencionada anteriormente podríamos hacernos la siguiente pregunta, ¿es posible automatizar el proceso de eliminación de ficheros “inútiles” de manera recursiva?, la respuesta es si.

El siguiente script nos ayudará servirá para lograr lo que deseamos.

#!/bin/bash

#Borrar de manera recursiva los ficheros inutiles.

echo Directorio Raiz: $PWD
echo Procesando...

find $PWD \( -name \*~ -or -name \*.o -or -name \*\# -or -name core \) -exec rm -vf {} \;

echo Listo!

En el código mostrado anteriormente el comando que realiza todo el trabajo por nosotros es find, voy a explicar brevemente que hace este comando.

El comando find necesita de un camino o ruta y de una expresión regular para lograr encontrar alguna coincidencia al recorrer el árbol de directorios cuya raíz es el camino especificado, find evaluará de izquierda a derecha las expresiones indicadas, tomando en cuenta las reglas de precedencia en los operadores, al conocer el resultado (cierto o falso) find continuará con el siguiente fichero.

Dentro del comando find encontrará el uso de ciertas opciones, entre las cuales cabe mencionar las siguientes:

-or
Representa el o lógico, es equivalente a utilizar la opción -o.
-exec
Ejecuta la orden especificada siempre y cuando find haya encontrado alguna concordancia con la expresión regular, por lo tanto se devuelve valor cierto. Las ordenes serán aquellos argumentos que siguen a -exec hasta que encontrar el carácter ; (punto y coma). Si desea ser consultado antes de realizar la ejecución al encontrarse alguna coincidencia, es preferible hacer uso de la opción -ok.
-name
Especifica la base del nombre del fichero que deseamos buscar, no es necesario especificar el directorio, hace distincion entre mayúsculas y minúsculas. Se puede hacer uso de metacaracteres.
{}
Cadena que es reemplazada por el nombre del fichero que se está procesando en ese instante.

Puede copiar el script mostrado arriba, supongamos que lo ha llamado rmnull, debe moverlo dentro del directorio /usr/local/bin/ (haciéndolo como superusuario). Posteriormente debe otorgarle permisos de ejecución.

$ sudo mv rmnull /usr/local/bin/
chmod +x /usr/local/bin/rmnull

Ahora bien, para hacer uso del script simplemente deberá teclear en consola rmnull, el directorio raíz será el directorio en el que se encuentre actualmente. Veamos un ejemplo de ejecución del script.

milton@omega:~$ touch file# file.o file~ pruebas/file# pruebas/file~ pruebas/core
milton@omega:~$ pwd
/home/milton
milton@omega:~$ rmnull
Directorio Raiz: /home/milton
Procesando...
«/home/milton/Desktop/find.txt~» borrado
«/home/milton/pruebas/file#» borrado
«/home/milton/pruebas/file~» borrado
«/home/milton/pruebas/core» borrado
«/home/milton/file#» borrado
«/home/milton/file.o» borrado
«/home/milton/file~» borrado
Listo!

En el ejemplo de ejecución hago uso del comando touch para crear los ficheros especificados (en caso de no existir), estos archivos en principio se encuentran vacíos y con permisos de lectura y escritura para el dueño del fichero, grupo al pertenece el dueño y demás usuarios. Posteriormente hago uso del comando pwd para conocer mi ubicación actual, a continuación “invoco” al script rmnull quien hará el trabajo de limpieza de manera automatizada.

AudioConverter v0.3

El día de hoy he publicado la nueva versión de este script, Audio Converter v0.3, para mayor detalle vea el artículo Convirtiendo los formatos de compresión de audio.

Zenity, mejorando la presencia de tus scripts

Zenity, es un programa que le permitirá desplegar cuadros de dialogos GTK+, lo cual le facilitará la interacción con el usuario. Tomando en consideración lo anterior, Zenity debe ser considerado a la hora de desarrollar scripts que necesitan presentar una interfaz “amigable”, lo cual facilitará el manejo del script. Por ejemplo, puede generar un cuadro de dialogo que le indique al usuario el progreso de la operación actual, o un mensaje de alerta al usuario.

Continue reading ‘Zenity, mejorando la presencia de tus scripts’

Pages: 1 2 3 4

Convirtiendo los formatos de compresión de audio

Siguiendo con la temática que propuse en el artículo Convirtiendo formatos de audio OGG a MP3 he decido ampliar dicho script para abarcar nuevos formatos. En esta ocasión he decidido hacerlo un poco más interactivo con el usuario, aún faltan cosas, pero las funciones elementales las cumple a cabalidad.

Las conversiones que se pueden realizar son las siguientes:

  • mp3 → wav
  • mp3 → ogg
  • ogg → wav
  • ogg → mp3
  • wav → ogg
  • wav → mp3

Continue reading ‘Convirtiendo los formatos de compresión de audio’

Convirtiendo formatos de audio OGG a MP3

Por todos es bien sabido la superioridad que presenta el formato de compresión de audio OGG Vorbis™ frente al MP3, adicionalmente, el primero de los formatos es libre, no posee patentes, algo que, en el caso del MP3 no es cierto, el MP3 posee licencia. Desgraciadamente no siempre lo mejor es lo más difundido, solo espero que esta situación cambie algún día.

Solo en algunas ocasiones es “preferible” hacer uso de los MP3, por ejemplo, mi reproductor portátil únicamente acepta los formatos Mp3 y WMA, dos formatos privativos, el primero de ellos fué desarrollado por Fraunhofer ISS y el segundo por Microsoft.

Continue reading ‘Convirtiendo formatos de audio OGG a MP3′