题
目前我正在一个音乐项目,处理用户的mp3上传。问题是,我找不到一个id3库,将正常工作的所有文件。我已经尝试了 id3-ruby
和 Mp3Info
库,但是没有人给我的一贯正确的结果。例如,最常见的问题:
- 错误的流参数(比特率和采样率,有时持续时间)
- 不支持扩展标记
我决定添加一个形式,其用户可以提供任选的信息,如艺术家和标题;帮了一点,但没有完全解决的问题。
什么最有用的和强大的ID3库的红宝石?
解决方案
http://www.hakubi.us/ruby-taglib/
我用这个项目,它的工作得相当好。包装标签库,这是非常便于携带。
其他提示
我用这个:
http://ruby-mp3info.rubyforge.org/
或
gem install ruby-mp3info
(加法规 sudo
对Mac或*nix)
还有一些rdoc文件,这是很好的。在缺点方面,我不太喜欢使用上的情况下领域的姓名,这似乎过于关注维护名称从规范。也许我应该黑客在一些别名。无论如何,这样的脚本扫描我的音乐图书馆和数字在标题:
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/
我尤其喜欢这一个,你也可以写入标签的文件。
id3tag
是另一种选择。例如:
require "id3tag"
mp3_file = File.open('/path/to/your/favorite_song.mp3', "rb")
tag = ID3Tag.read(mp3_file)
puts "#{tag.artist} - #{tag.title}"
不隶属于 StackOverflow