سؤال

حاليا أنا أعمل على مشروع موسيقى، التعامل مع تحميلات مستخدم MP3. المشكلة هي أنه لا يمكنني العثور على مكتبة ID3 التي ستعمل بشكل صحيح لجميع الملفات. لقد حاولت id3-ruby و Mp3Info Libs ولكن لا أحد منهم يعطيني النتائج الصحيحة باستمرار. على سبيل المثال، المشاكل الأكثر شيوعا:

  • معلمات دفق خاطئة (معدل معدل البت والعينة، في بعض الأحيان مدة)
  • لا يدعم العلامات الموسعة

قررت إضافة نموذج، حيث يمكن للمستخدمين تزويد المعلومات الاختيارية مثل الفنان والعنوان؛ وقد ساعد ذلك قليلا، لكنه لم يحل المشكلة تماما.

ما هي مكتبة ID3 الأكثر قابلية للاستخدام وقوي ل Ruby؟

هل كانت مفيدة؟

المحلول

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

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}"
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top