Hola. Hace cosa de dos semanas tomé coraje y finalmente instalé Ubuntu en mi PC. Logicamente sin partición para Windows. Lejos, una de las mejores decisiones que tomé. La PC mejoró su velocidad enormemente. Pero este post no está dedicado a Ubuntu o Linux. De eso ya hay bastante y no puedo decir nada nuevo. Este post está dedicado a un problema que encontré al hacer la transferencia de un sistema a otro.
Yo soy fanático de la musica y tengo varios gigas de ella. Los discos los tengo todos en una carpeta de Música, ordenados por intérprete y luego por año del disco. Cuando usaba Windows, para reproducir un disco, entraba en la carpeta correspondiente y luego apretaba el botón de reproducir todo que viene incorporado con el explorador de windows (la siguiente imagen no es de mi compu).
El problema surgió al tratar de hacer lo mismo en Ubuntu. No existe tal botón. Al menos yo no lo encontré. La primer solución que pensé fue la de crear archivos .m3u de los discos. Para los que no saben, estos archivos contienen una lista de reproducción para que los programas de reproducción de audio sepan qué queremos escuchar y en qué orden. Al principio la solución parecía sencilla, pero habia una dificultad. Crear las listas es fácil, solo se escriben los nombres de los archivos .mp3 en un archivo de texto y le agregan la extensión .m3u. El problema era que debo tener más de 500 discos, cada uno en su respectiva carpeta. Esto dificultaba mucho el tema de armar una lista para cada disco. Por eso aproveché que estoy aprendiendo a programar en python y decidí que mi primer programa sea uno que haga justamente esto. Mi programa iba a tomar toda la lista de canciones de mi PC, separarlas por disco y luego armar las correspondientes listas de reproducción en las carpetas de los discos.
Para empezar con esto, debía tener una lista de todos los discos y canciones que tenía, al igual que sus respectivos directorios. Estos lo logré mediante uso de la terminal de Linux. Abriendo una terminal y usando el comando "find" se pueden crear esta lista. El comando es el siguiente:
find -name "*.mp3" -print >> lista.txt
El comando busca todos los archivos en la carpeta y subcarpetas con la extensión .mp3 y escribe su dirección en el archivo lista.txt. El archivo de salida tiene esta pinta:
Ya con esta información podía hacer mi programa. El programa hace lo siguiente, Primero abre el archivo y crea una lista de los temas y los ordena alfabéticamente. Como los temas incluyen su dirección en el disco, quedan ordenados por álbum. Luego separo nombre de la canción del nombre del disco. Mientras el nombre del disco sea el mismo, guardo los nombres de las canciones en un archivo con el nombre del disco. Cuando el programa encuentra que el nombre del disco cambió, crea un nuevo archivo m3u y vuelve a guardar los nombres de las canciones de la lista de reproducción.
Bueno, acá les dejo el código del programa. Traté de comentar las operaciones basicas para que cualquiera pueda entenderlo. Sé que está un poco desprolijo y que se puede optimizar. Tengan en cuenta que es mi primer programa escrito en Python y todavía no conozco muchas funcionas o mañas del lenguaje. Si alguno tiene alguna recomendación no dude en escribirla en la zona de comentarios.
Ahora si, el programa
https://docs.google.com/file/d/0B31-KwyLGFi0Z3hkOUo4UHVTeFU/edit?usp=sharing
Para los que no saben cómo usar el código, tienen que escribir lo siguiente en la terminal, estando dentro de la carpeta en donde tienen guardada toda la música (también debería funcionar desde la carpeta Home).
python listam3u.py
Con eso debería funcionar. Recuerden que el archivo creado por el find debe estar en la misma carpeta que el programa.
Saludos y espero que les sea útil
PD1: El programa fue escrito para usar en Linux, debido a la forma de escribir direcciones que tiene el mismo. Para usarlo en windows hay que hacer unas leves modificaciones que deberían ser muy faciles. Sólo hay que ver cómo es la salida de un comando tipo "find".
PD2: Por si les interesa, les dejo el link del libro que estoy usando para aprender a programar en Python. Es muy didáctico, con varios ejemplos y está tanto en castellano como en inglés. El link es
Yo soy fanático de la musica y tengo varios gigas de ella. Los discos los tengo todos en una carpeta de Música, ordenados por intérprete y luego por año del disco. Cuando usaba Windows, para reproducir un disco, entraba en la carpeta correspondiente y luego apretaba el botón de reproducir todo que viene incorporado con el explorador de windows (la siguiente imagen no es de mi compu).

El problema surgió al tratar de hacer lo mismo en Ubuntu. No existe tal botón. Al menos yo no lo encontré. La primer solución que pensé fue la de crear archivos .m3u de los discos. Para los que no saben, estos archivos contienen una lista de reproducción para que los programas de reproducción de audio sepan qué queremos escuchar y en qué orden. Al principio la solución parecía sencilla, pero habia una dificultad. Crear las listas es fácil, solo se escriben los nombres de los archivos .mp3 en un archivo de texto y le agregan la extensión .m3u. El problema era que debo tener más de 500 discos, cada uno en su respectiva carpeta. Esto dificultaba mucho el tema de armar una lista para cada disco. Por eso aproveché que estoy aprendiendo a programar en python y decidí que mi primer programa sea uno que haga justamente esto. Mi programa iba a tomar toda la lista de canciones de mi PC, separarlas por disco y luego armar las correspondientes listas de reproducción en las carpetas de los discos.
Para empezar con esto, debía tener una lista de todos los discos y canciones que tenía, al igual que sus respectivos directorios. Estos lo logré mediante uso de la terminal de Linux. Abriendo una terminal y usando el comando "find" se pueden crear esta lista. El comando es el siguiente:
find -name "*.mp3" -print >> lista.txt
El comando busca todos los archivos en la carpeta y subcarpetas con la extensión .mp3 y escribe su dirección en el archivo lista.txt. El archivo de salida tiene esta pinta:

Ya con esta información podía hacer mi programa. El programa hace lo siguiente, Primero abre el archivo y crea una lista de los temas y los ordena alfabéticamente. Como los temas incluyen su dirección en el disco, quedan ordenados por álbum. Luego separo nombre de la canción del nombre del disco. Mientras el nombre del disco sea el mismo, guardo los nombres de las canciones en un archivo con el nombre del disco. Cuando el programa encuentra que el nombre del disco cambió, crea un nuevo archivo m3u y vuelve a guardar los nombres de las canciones de la lista de reproducción.
Bueno, acá les dejo el código del programa. Traté de comentar las operaciones basicas para que cualquiera pueda entenderlo. Sé que está un poco desprolijo y que se puede optimizar. Tengan en cuenta que es mi primer programa escrito en Python y todavía no conozco muchas funcionas o mañas del lenguaje. Si alguno tiene alguna recomendación no dude en escribirla en la zona de comentarios.
Ahora si, el programa
https://docs.google.com/file/d/0B31-KwyLGFi0Z3hkOUo4UHVTeFU/edit?usp=sharing
Para los que no saben cómo usar el código, tienen que escribir lo siguiente en la terminal, estando dentro de la carpeta en donde tienen guardada toda la música (también debería funcionar desde la carpeta Home).
python listam3u.py
Con eso debería funcionar. Recuerden que el archivo creado por el find debe estar en la misma carpeta que el programa.
Saludos y espero que les sea útil
Axolotl
PD1: El programa fue escrito para usar en Linux, debido a la forma de escribir direcciones que tiene el mismo. Para usarlo en windows hay que hacer unas leves modificaciones que deberían ser muy faciles. Sólo hay que ver cómo es la salida de un comando tipo "find".
PD2: Por si les interesa, les dejo el link del libro que estoy usando para aprender a programar en Python. Es muy didáctico, con varios ejemplos y está tanto en castellano como en inglés. El link es