Script: Crear listas de reproducción m3u

Los archivos M3U son un tipo de archivos que sirven para almacenar listas de reproducción de archivos multimedia, y principalmente usado para listas de reproducción de audio. Estos archivos son reconocidos por la mayoría de reproductores en todos los sistemas operativos, como pueden se XMMS, VLC, Winamp, etc.

Los archivos M3U son archivos de texto plano con extensión .m3u y con una sintaxis muy sencilla.

En la primera línea de un archivo M3U siempre tiene que estar la sentencia #EXTM3U, que es lo que indica que se trata de un fichero M3U. Posteriormente se introducen en cada línea se introduce la ruta(relativa o absoluta) de los archivos multimedia que conformarán la lista de reproducción. Existen otras sentencias, pero son optativas y sirven para indicar el tiempo del archivo y el titulo en texto claro.

Como podéis ver es muy sencillo crear archivos de listas de reproducción M3U, también es muy sencillo ocultar datos en estos archivos, pero de esto hablaré en un próximo post.

Pues bien, a continuación teneis un sencillo script de bash que crea una lista de reproducción con los archivos mp3 y ogg que se encuentren en el directorio actual y recursivamente en todos los subsiguientes. También si descomentas una linea podrás agregar los archivos wav, pero la he comentado porque no es tan común tener música en .wav.

#!/bin/bash
##################################################################################
#       Script para crear archivos m3u con los arhivos a partir  del
#                               directorio actual
#               Creado por Miguel Peris(mrcomputer) version 1.0 11/04/2009
#       Uso: ./m3.sh nombre_de_la_lista.m3u
#             Sin parametros genera un nombre de lista por defecto
#       Licenciado bajo los terminos de la licencia GPL v3
##################################################################################
 
if [ -z $1 ]; then
archivo="lst-$(basename $PWD).m3u"
else
archivo=$1
fi
echo $archivo
 
# cabecera del archivo m3u y si el archivo existe lo borra
echo "#EXTM3U">$archivo
 
# genera listas para mp3 y ogg
ls -1R |find . -type f -print| grep -i .mp3 >>$archivo
ls -1R |find . -type f -print|  grep -i .ogg >>$archivo
 
# Descomentar la siguiente linea para tambien introducir los .wav a la lista
#ls -1R |find . -type f -print|  grep -i .wav >>$archivo
 
#EOF

Ahora solo hay que guardarlo como m3.sh y darle permisos de ejecución con chmod +x m3.sh. Si lo ejecutas sin parámetros el nombre de la lista de reproducción será lst-<directorio_actual>.m3u, por ejemplo si el directorio que nos encontramos se llama musica, el archivo m3u que genera el script por defecto será lst-musica.m3u.

En cambio si por parámetros le pasamos un nombre, generará la lista con ese nombre. Por ejemplo si ejecutamos nuestro script así, ./m3u.sh mi_lista.m3u generará el archivo mi_lista.m3u. También si queremos podemos pasarle el nombre con la ruta(absoluta o relativa) de la lista.

Espero que a alguien le sea de utilidad este pequeño script.

6 Comments

  1. HacKreatorz says:

    Está genial el script, en cuanto esté con mi ordenador lo pruebo. A ver si ya no tengo que añadir la música a los distintos reproductores por separado.

  2. SartreJP says:

    Muy bueno el script, muy útil para las listas en general y facilitar la reproduccion en los moviles.
    Excelente trabajo.
    Felicitaciones!

  3. bvb says:

    Hola, tu scrip me parecio muy interesante, espero me puedas ayudar con un pequeño problema, estoy pensando en migrar de Ubuntu 7.04 a 9.04 en cuanto salga, pero a lo largo del tiempo he ido creando una biblioteca musical en un disco externo, los archivos m3u los guardo en un directorio llamado listas de reproduccion que contiene solamente las listas de reproduccion el contenido de estas hace referencia a la unidad y la ruta de los archivos ej. (sdb1/musica/nombre del artista/album/titulo.mp3) pero he visto que al conectar el disco en otro equipo no me reconoce la ruta porque no corresponde en ubuntu 9.04 me da otro nombre de mi unidad, entonces estoy buscando una de dos cosas, un scrip para cambiar la ruta de todos mis m3u o un scrip para poner una ruta relativa (en windows lo he echo con los m3u pero en linux no he podido colocar rutas relativas en los m3u) espero me puedas ayudar. de antemano gracias.

  4. mrcomputer says:

    @bvb me pondre a investigar sobre ello y si hago un script lo publico.

    Saludos

  5. Pietro says:

    Hola. disculpa mi ignorancia en estos temas. Pero no entiendo muy bien como hay que hacer para probarlo. Es decir: es un archivo para ejecutar en un equipo en local, o en un servidor?
    Yo he creado un directorio MP3 en mi servidor con varios archivos MP3 y he colocado este script con un fichero m3.sh pero si lo ejecuto me lo decarga. Hay que crear un archivo php o algo así para mostrar el litado o que genere el m3u?.

    Yo tengo un scrip que genera un playlist en XML a partir de un directorio, incluso colocando imagen de portada del disco o del video. Está en PHP por si a alguien el interesa.
    Un saludo

  6. mrcomputer says:

    @Pietro Este script solo es para usarlo de manera local en una máquina Linux. Te lo tienes que bajar y ejecutar locaclmente.

    Un saludo