Pergunta

Atualmente estou trabalhando em um projeto de música, lidar com o usuário mp3 uploads. O problema é que não consigo encontrar uma biblioteca id3 que irá funcionar corretamente para todos os arquivos. Eu tentei id3-ruby e Mp3Info libs mas nenhum deles me dá resultados consistentemente corretos. Por exemplo, os problemas mais comuns:

  • parâmetros de fluxo erradas (taxa de bits e taxa de amostragem, às vezes a duração)
  • não suporta etiquetas estendidas

Eu decidi adicionar um formulário, onde os usuários podem fornecer informações opcionais como artista e título; que ajudou um pouco, mas não resolveu completamente o problema.

O que é a biblioteca ID3 mais utilizável e poderosa para Ruby?

Foi útil?

Solução

http://www.hakubi.us/ruby-taglib/

Eu usei isso para um projeto e funcionou muito bem. Wrapper taglib ao redor, o que é muito portátil.

Outras dicas

Eu usei isso:

http://ruby-mp3info.rubyforge.org/

ou

gem install ruby-mp3info (adicione o sudo regulamento para Mac ou nix *)

Há alguma documentação rdoc, que é bom. No lado negativo, eu não gosto muito do uso de nomes de campos maiúsculas, o que parece muito preocupado em preservar os nomes do spec. Talvez eu deva cortar em alguns aliases. De qualquer forma, este script de exemplo verifica palavras a minha biblioteca de música e contagens em títulos:

require 'mp3info'

count = 0
words = Hash.new { |h, k| h[k] = 0 }
Dir.glob("E:/MUSIC/**/*.mp3") do |f|
  count += 1
  Mp3Info.open(f) do |mp3info|
    title = mp3info.tag2.TIT2
    next unless title
    title.split(/\s/).each { |w| words[w.downcase] += 1 }
  end
end
puts "Examined #{count} files"
words.to_a.sort{ |a, b| b[1] <=> a[1] }[0,100].each { |w| puts "#{w[0]}: #{w[1]}" }

http://id3lib-ruby.rubyforge.org/

Eu particularmente gostei este, você pode também marcas de gravação para o arquivo.

id3tag é outra opção. Exemplo:

require "id3tag"

mp3_file = File.open('/path/to/your/favorite_song.mp3', "rb")
tag = ID3Tag.read(mp3_file)
puts "#{tag.artist} - #{tag.title}"
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top