Esto puede ser un poco extraño.
Tengo una colección de canciones en iTunes y me gustaría copiarla en una SDCARD para reproducirla en la radio de mi coche, junto con las listas de reproducción que tengo para escuchar la música en "orden correcto".
Copiar la estructura de carpetas en $HOME/Music/iTunes/iTunes Media/Music/
funciona bien, y el reproductor puede leer los archivos.
En cuanto a las listas de reproducción, iTunes permite exportarlas en .m3u
o .m3u8
formato. Las rutas en la lista de reproducción están en formato "OSX", pero un rápido sed-liner cambia las rutas a relativas y las pone en formato DOS:
sed -i.bak -e 's:/Users/jjarava/Music/iTunes/iTunes Media/Music:..:g' -e 's:/:\\:g' "$1";
(la SDCARD de la radio del coche se identifica como SDCARD:\
)
Puedo ver los archivos de la lista de reproducción en la radio del coche, pero sólo algunos de los archivos son "visibles"/se reproducen desde la lista de reproducción.
Dado que todos los archivos "perdidos" contienen algún carácter extendido (como á
, é
, í
, ó
o ú
en español). En el pasado me picó la diferente forma de codificar los nombres (ver Linus Torvalds y el sistema de archivos de OS X para el contexto), así que sospecho que el problema puede deberse a la codificación de los nombres de los archivos en la SDCARD. Cuando "navego" por la SDCARD puedo ver los autores/rutas correctamente y todos los archivos están disponibles, así que creo que es un problema de la forma en que las rutas se leen desde el archivo .m3u y (no) se resuelven a los archivos adecuados.
Mi primera idea fue escribir otro script para buscar las rutas "infractoras" y renombrarlas tanto en el sistema de archivos como en las listas de reproducción, pero me estoy topando con un muro, ya que find/grep, etc. parecen tener problemas para trabajar con archivos con caracteres extendidos. Algo que "debería" funcionar como:
find /Volumes/MUSICA_VW/ -iname '*.mp3' | grep -e '[áéíóú]'
para obtener las canciones/rutas infractoras, devuelve cada una de las canciones (es decir, los mismos resultados que find
solo)
La opción de renombrar los archivos en iTunes no es realmente una opción, ya que cada vez que añado música tiene que ser "procesada". No me importa demasiado tener las rutas adecuadas, etc. en el reproductor, por eso no me importaría hacer un renombramiento masivo, etc. como parte de la "exportación", pero la información en iTunes debería ser la correcta...
Así que antes de ahondar en los secretos arcanos de bash
y findutils
O simplemente me atrevo y codifico algo en Python, ¿alguna sugerencia? Estoy seguro de que no soy el primero que ha golpeado este problema específico, estoy seguro.
Y a todos los que se han tomado el tiempo de leer hasta ahora, GRACIAS ¡!