2009-06-09 17 views
7

現在、私はユーザーmp3のアップロードを扱う音楽プロジェクトに取り組んでいます。問題は、すべてのファイルに対して正しく動作するid3ライブラリが見つからないことです。 私はid3-rubyMp3Infoのlibsを試しましたが、どれも正しい結果を得られません。 例えば、最も一般的な問題:Ruby mp3 Id3 parsing

  • 間違ったストリーム・パラメータ(ビットレート、サンプルレート、時々期間)
  • は、拡張タグ

をサポートしていませんが、私は、フォーム、ユーザーを追加することにしましたアーティストやタイトルのようなオプションの情報を提供することができます。それは少し助けてくれたが、問題を完全には解決しなかった。

ルビのために最も有用で強力なID3ライブラリは何ですか?

+0

サポートする必要があるタグのリストを投稿できますか?ありがとう。 – Tilo

答えて

5

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

私はプロジェクトのためにこれを使用し、それは非常によく働きました。非常に移植性の高いtaglibのラッパー。

+0

ありがとう、私はそれを試してみましょう。何か問題がありますか? –

+0

私はMP3ライブラリ全体に対してこれを使用しましたが、問題はありませんでした。私はビットレート/サンプルレートで何もしなかったので、私はそれに話すことができません。 –

0

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

私は特にこれを気に入って、あなたはまた、ファイルにタグを書き込むことができます。

+0

はい、しかし時にはこのlib doesntは正しく動作しますので、私はより良いものに切り替えることを決めました。 –

+0

utf-8をサポートしていないようです。そうでなければそれはきちんとしている。 – rpattabi

+2

これは、もはや維持されていないid3libに基づいています。同じ著者(私)の最新のライブラリについては、[taglib-ruby](https://github.com/robinst/taglib-ruby)を試してみてください。 – robinst

4

私はこれを使用しました:

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

または

gem install ruby-mp3info

は(Macや* nixのために規制 sudoを追加)

いいですいくつかの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]}" } 
+0

提案していただきありがとうございます。しかし、インターフェイスはとても難しいようです。 id3lib-rubyのようなものが好きです。例えば tag = ID3Lib :: Tag.new( 'test.mp3') tag.title #test_title tag.title = 'new_title' tag.udpate! #test.mp3のタイトルはnew_titleで更新されます – rpattabi

関連する問題