Domanda

Al momento sto lavorando su un progetto musicale, che si occupa con i caricamenti utente mp3. Il problema è che non riesco a trovare una libreria ID3 che funzionerà correttamente per tutti i file. Ho provato id3-ruby e Mp3Info librerie, ma nessuno di loro mi dà risultati sempre corretti. Ad esempio, i problemi più comuni:

  • parametri di flusso sbagliate (bitrate e frequenza di campionamento, a volte la durata)
  • non supporta i tag estesi

Ho deciso di aggiungere un modulo, dove gli utenti possono fornire informazioni facoltative come artista e titolo; che ha aiutato un po ', ma non ha risolto completamente il problema.

Qual è la biblioteca più utilizzabile e potente ID3 per Ruby?

È stato utile?

Soluzione

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

Ho usato questo per un progetto e ha funzionato abbastanza bene. Wrapper per taglib, che è molto portabile.

Altri suggerimenti

Ho usato questo:

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

o

gem install ruby-mp3info (aggiungere il sudo regolamento per Mac o * nix)

C'è un po 'di documentazione rdoc, che è bello. Sul fronte dei ribassi, lo faccio non molto come l'uso di nomi di campo maiuscoli, che sembra troppo preoccupato di preservare i nomi dalla spec. Forse dovrei incidere in alcuni alias. In ogni caso, questo script di esempio analizza la mia libreria musicale e conta le parole nei titoli:

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/

Ho particolarmente apprezzato questo uno, è possibile anche scrivere tag al file.

id3tag è un'altra opzione. Esempio:

require "id3tag"

mp3_file = File.open('/path/to/your/favorite_song.mp3', "rb")
tag = ID3Tag.read(mp3_file)
puts "#{tag.artist} - #{tag.title}"
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top