目前我正在做一个音乐项目,处理用户 mp3 上传。问题是我找不到对所有文件都能正常工作的 id3 库。我已经尝试过id3-ruby
和Mp3Info
libs,但它们都没有给我始终如一的正确结果。例如,最常见的问题:
- 错误的流参数(比特率和采样率,有时是持续时间)
- 不支持扩展标签
我决定添加一个表单,用户可以在其中提供艺术家和标题等可选信息;这有点帮助,但并没有完全解决问题。
ruby 最有用和最强大的 ID3 库是什么?
http://www.hakubi.us/ruby-taglib/
我将它用于一个项目,并且效果很好。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]}" }
截至 2019 年,最佳答案是:
所有其他库早已无人维护。
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}"