Frage
Zur Zeit arbeite ich an einem Musikprojekt, den Umgang mit Benutzer mp3-Uploads. Das Problem ist, dass ich nicht eine ıd3 Bibliothek finden, die richtig für alle Dateien arbeiten.
Ich habe versucht, id3-ruby
und Mp3Info
Libs aber keiner von ihnen gibt mir konsequent korrekte Ergebnisse.
Zum Beispiel am häufigsten auftretenden Problemen:
- falsche Stream-Parameter (Bitrate und Abtastrate, manchmal Dauer)
- unterstützt keine erweiterten Tags
Ich beschloss, eine Form hinzuzufügen, wo die Nutzer optionale Informationen wie Interpret und Titel liefern können; das half ein wenig, aber nicht das Problem vollständig zu lösen.
Was ist die nutzbare und leistungsstarke ID3-Bibliothek für Ruby?
Lösung
http://www.hakubi.us/ruby-taglib/
Ich habe diese für ein Projekt und es funktionierte ganz gut. Wrapper um taglib, was sehr tragbar ist.
Andere Tipps
Ich habe verwendet, um diese:
http://ruby-mp3info.rubyforge.org/
oder
gem install ruby-mp3info
(fügen Sie die Regelung sudo
für Mac oder * nix)
Es gibt einige rdoc Dokumentation, das ist schön. Auf der anderen Seite muß ich wie die Verwendung von Großbuchstaben Feldnamen nicht viel, die die Namen von der Spezifikation zu erhalten allzu besorgt zu sein scheint. Vielleicht sollte ich in einigen Aliase hacken. Wie auch immer, dieser Beispielskript scannt meiner Musikbibliothek und zählt Worte in Titeln:
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/
Ich mochte besonders diese, auch Tags in die Datei schreiben können.
id3tag
ist eine weitere Option. Beispiel:
require "id3tag"
mp3_file = File.open('/path/to/your/favorite_song.mp3', "rb")
tag = ID3Tag.read(mp3_file)
puts "#{tag.artist} - #{tag.title}"