2009-06-09 74 views
7

目前我正在開發一個音樂項目,處理用戶的mp3上傳。問題是我無法找到一個能夠正確工作所有文件的id3庫。 我試過id3-rubyMp3Info庫,但它們都沒有給我始終如一的正確結果。 例如,最常見的問題:Ruby mp3 Id3解析

  • 錯流參數(比特率和採樣率,有時持續時間)
  • 不支持擴展標籤

我決定增加一個形式,其中用戶可以提供可選信息,如藝術家和標題;這有所幫助,但並未完全解決問題。

什麼是最實用和最強大的紅寶石ID3庫?

+0

你能發佈一個需要支持的標籤列表嗎?謝謝。 – Tilo 2011-10-19 05:40:43

回答

5

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

我用這一個項目,它工作得很好。在taglib周圍包裝,非常便攜。

+0

謝謝,我會試試看。它有什麼問題嗎? – 2009-06-09 21:23:42

+0

我用它來對付我的整個MP3庫,並沒有任何問題。儘管我沒有做過比特率/採樣率的任何事情,所以我不能說那個。 – 2009-06-09 22:01:34

0

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

我特別喜歡這一個,你也可以寫標籤文件。

+0

是的,但有時這個lib不能正常工作,所以我決定改用更好的東西 – 2009-06-10 00:23:04

4

我用這個:

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]}" }