Hoy he ido un paso más allá.

En la entrada anterior coloqué mi primer script en Shell, que básicamente eran cuatro chorradas. Hoy me lo he querido currar un poco más y he hecho este script que, dándole la ruta de una carpeta, coge todos los mp3 que encuentra dentro (no en carpetas interiores) y los convierte en una calidad determinada (por defecto en mi script es 128 kbps y 44.1 kHz, ya que es la calidad en la que tengo toda mi música). El usuario no se debe preocupar de que estén en otra carpeta y después sobreescribir los archivos originales: todo eso es lo que hace el script (es precisamente para lo que lo queria, ya que me daba pereza hacerlo manualmente). Es decir, se empieza con la carpeta con los mp3 en una calidad y se acaba con la misma carpeta con los mp3 en la calidad que le hemos dado.

Os dejo aquí el script (haced copypaste):

#!/bin/bash
mkdir ~/sk-temp
echo "Vas a pasar todos los .mp3 de la carpeta \"$1\" a calidad 128kbps y frecuencia 44.1 kHz. Perderas los ID3 tags de los archivos. ¿Quieres continuar? (s/n)" #Se pierden los ID3. Es culpa del LAME.
read RESP
CARPETA="$1"
cd "$CARPETA"
while [ "$RESP" = "s" ]; do
for i in *.mp3; do #Si quereis podeis cambiar la calidad (el 128) o la frecuencia (44.1)
lame -b 128 --cbr -s 44.1 "$CARPETA/${i}" "/home/johnny/sk-temp/${i}" #¡OJO! Poner vuestra carpeta personal, el "~" no funciona.
done
cd ~/sk-temp
for i in *.mp3; do
cp ~/sk-temp/"${i}" "$CARPETA" -f #Se sobreescriben los archivos viejos por los nuevos, sin confirmar.
rm ~/sk-temp/"${i}" -f #Copiar + eliminar = Cortar :-)
done
echo "¿Reconvertir otra carpeta? (s/n)"
read RESP
if [ "$RESP" = "s" ]; then
echo "Escribe la ruta de la carpeta:"
read CARPETA
cd $CARPETA
else if [ "$RESP" != "n" ]; then
echo "No te he entendido."
else
echo "OK."
fi
fi
done
rmdir ~/sk-temp
echo "Bye!"
exit

Un apunte. Antes de ejecutarlo leed los comentarios. Para ejecutarlo, primero hace falta haberle dado los permisos de ejecución (chmod +x nombredelscript.sh). Se ejecuta así:

$ ./nomdelscript.sh /rutadelacarpetaambarxiusmp3/

La ruta tiene que ser la ruta completa (empezando por /).

Requisitos para ejecutarlo:
  • Linux! (y Bash)
  • El paquete LAME (necesario para reconvertir los mp3)
  • Una carpeta con archivos mp3 :-)

1 Responses to Convertir todos los mp3 de una carpeta a una calidad determinada

  1. Blaxter Says:
  2. Y con ésto perderás todos los id3 de los archivos. Y un mp3 sin su id3 es inútil, al menos desde mi punto de vista.

    En su tiempo tuve éste mismo problema y me hice una solución simple [0] como esta pero manteniendo los id3 de los ficheros (baiscamente, (1) leer id3, (2) lame, (3) escribir id3)

    [0] http://bicosyes.com/script-recomprension-mp3-2/