Audiosum es una herramienta que permite calcular la firma MD5 para un archivo MP3, pero ignorando la metainformación (etiquetas ID3v1, ID3v2, Lyrics3v1 y Lyrics3v2). En este momento no existe soporte para OGG.
Audiosum surge de la idea de buscar duplicados de audio cuando los archivos difieren únicamente en sus etiquetas. Por ejemplo, en el ejemplo anterior, existen cuatro archivos cuya firma MD5 es diferente, por lo que son diferentes. Sin embargo, su parte de audio es idéntica.
alvarezp@alvarezp-laptop:~$ md5sum (algunos archivos)
d662def56360c1ba71975fe0858651df other/music/ALEX UBAGO - QUE PIDES TU.mp3
4e91970580b0355b3aa7e711416d50ba other/music/Alex Ubago.- Vuelve.mp3
07894b351ae9df4a3c8ca487169e1524 DCIM/iPod_Control/Music/F00/ASFP.mp3
82db5ed3ffe951aba19cdd2d38cbea01 other/music/no doubt - bath water.mp3
alvarezp@alvarezp-laptop:~$ find -iname "*.mp3" | audiosum | sort | uniq -D -w 41
003c6b41 36d2a24f44413f4a4ab3282e7cea1649 [I3v1] [I3v2] [----] [----] ./other/music/ALEX UBAGO - QUE PIDES TU.mp3
003c6b41 36d2a24f44413f4a4ab3282e7cea1649 [I3v1] [----] [----] [----] ./other/music/Alex Ubago.- Vuelve.mp3
0058f7a4 17df577141ae1db6384309e2e3cbe2c6 [I3v1] [I3v2] [----] [----] ./DCIM/iPod_Control/Music/F00/ASFP.mp3
0058f7a4 17df577141ae1db6384309e2e3cbe2c6 [I3v1] [----] [----] [----] ./other/music/no doubt - bath water.mp3
El primer valor que se imprime es el tamaño del audio procesado. El segundo valor es la firma MD5.
Obsérvese cómo a audiosum no se le proveen los archivos por la línea de comando sino por la entrada estándar. Se puede incluir tee audiosum.out
antes de sort para que las firmas se almacenen en un archivo de texto antes de ser ordenadas. El comando uniq -D -w 41
es el que se encarga de dejar únicamente los duplicados, considerando los primeros 41 caracteres.
Para encontrar duplicados fácilmente, se incluye el script «audiodup», al que se le pasan como parámetros las rutas donde buscar los mp3 duplicados. Éste hace uso eficiente de audiosum, para detectar rápidamente los audios duplicados, de la siguiente manera:
- Genera una lista de archivos a analizar, según las rutas indicadas.
- Descarta los archivos no duplicados según su tamaño.
- Descarta los archivos no duplicados según el primer 2% del contenido.
- Descarta los archivos no duplicados según el contenido completo.
- Los archivos restantes son duplicados. Se agrupan y se presentan.
Descarga en .tar.gz: audiosum-[custom_field field=»project-version» this_post=»1″ /].tar.gz
Dirección de la categoría en el blog: audiosum.
Para compilar:
#Instalar la librería mhash.
apt-get install libmhash-dev #para Ubuntu
#Descargar el archivo audiosum-[custom_field field="project-version" this_post="1" /].tar.gz.
wget http://blog.alvarezp.org/[custom_field field="project-download-url" this_post="1" /]
#Descomprimir el paquete.
tar xvzf audiosum-[custom_field field="project-version" this_post="1" /].tar.gz
cd audiosum-[custom_field field="project-version" this_post="1" /]
#Configurar y crear
./configure && make
#Instalar
sudo make install
Ejemplos de uso de audiodup y audiosum:
audiodup .
audiodup /mnt/music $HOME
find -iname "*.mp3" | audiosum
find -iname "*.mp3" | audiosum > audiosum.out
find -iname "*.mp3" | audiosum | tee audiosum.out
find -iname "*.mp3" | audiosum | sort | uniq -D -w 41