Pergunta

Eu tenho dois diretórios contendo ~ 20 GB de arquivos de música (principalmente mp3, ogg alguns), e eu gostaria de detectar todas as músicas duplicadas. Há dois fatores complicadores:

  1. Uma canção pode ter diferentes nomes nos dois diretórios.
  2. Dois arquivos que contenham a mesma canção pode ter diferentes tags ID3 e, portanto, têm diferentes somas de verificação.

O que é uma boa abordagem para resolver este?

Foi útil?

Solução

A forma como eu ter ido sobre isso no passado é usar genpuids que vêm de IP Music. O software de código fechado cria uma impressão digital de áudio de um arquivo, independentemente do formato, id3, soma de verificação etc.

Mais informação pode ser encontrada aqui .

Isso deve garantir a maior quantidade de jogos duplicados positivos e minimizar os falsos positivos. Ele também pode marcar corretamente ID3 tags incorretas.

Outras dicas

Aqui está o que eu faria (ou ter feito antes) ...

  1. Coloque todas as músicas para o iTunes (urso com me) (Note, se você pode usar o iTunes aqui, então parada ... Eu suponho que a sua lista de tolos é longa e incontrolável)
  2. Excluir todas as músicas, enviando-os para a lixeira, desta forma você se livrar da estrutura do diretório
  3. Obviamente, não "lixo vazio". Resgatar as músicas para uma pasta no seu desktop
  4. Use software como mediamonkey , dupe eliminato r ou mesmo itunes -se a identificar as duplicatas. Dupe Eliminator é bom na medida em que os controlos por uma quantidade variável de fatores, artista, comprimento, tamanho do arquivo e outros enfeites e suposições que é um joguete eo que não é)
  5. Recarregar no Itunes, desta vez em torno de seleção "Auto organizar canções", que vai soltar o seu, lista dupeless nova em um arranjo agradável by-artista-by-álbum

... voila! (Ou se você ler digg: ??"... profit")

/ MP

Se você tem uma biblioteca que pode analisar os arquivos, você pode executar o hash nos dados de áudio. Isso não vai ajudá-lo se a música é um rip diferente ou tem ser recompressed / transcodificada / etc.

é o artista ID3 / OGG-equiv e canção metatags precisa? Se eles forem, você pode usá-los.

Edit: Se eles não são, talvez pudessem ser feita para ser ... Se você está lidando apenas com álbuns inteiros, existem várias ferramentas que irão receber todos os dados de tag com base no número de faixas e sua comprimentos.

Se você está lidando com misturas de álbuns e arquivos individuais, torna-se mais complicado.

Eu tenho certeza que há soluções mais elegantes lá fora - mas se os dados de áudio é equivalente, em seguida, descascar as tags ID3 e hashing deve fazer o truque. Depois de hashing, você pode colocar as tags ID3 de volta se quiser.

Talvez a Last.fm API seria útil. Ele inclui uma chamada track.getInfo que retorna XML incluindo o comprimento da faixa, nome do artista, número da faixa, etc. Você poderia comparar faixas e ver se eles têm mais de N campos iguais e se assim for, assumir que eles estão na mesma faixa.

Eu não tenho nenhuma ideia sobre se eles vão ficar bem com você enviar solicitações de API para 40GB de música, apesar de tudo.

Como sobre algo como isto: encontrar uma biblioteca para obter o comprimento do mp3, bem como um ponteiro para os dados de áudio (parece que existem algumas bibliotecas lá fora, que podem fazer isso), faça um primeiro filtro passa baseado em canção comprimentos, e para as músicas que têm correspondentes comprimentos de checksum seus dados de áudio. Semelhante a este roteiro para encontrar arquivos duplicados / images .

Alguns adaptação de ffTES tem funcionado muito bem para mim para uma tarefa muito semelhante.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top