我正在尝试使用 'mp3info' gem 读取 mp3 文件,并通过在目录中的文件名中以 .mp3 结尾的每个文件并使用 Dir.chdir() 进入目录并重复该过程并存储这些标签在数据库中。但是我有 30gb 的音乐收藏,整个扫描大约需要 6-10 分钟才能完成。有什么办法可以优化这个扫描吗?
def self.gen_list(dir)
prev_pwd=Dir.pwd
begin
Dir.chdir(dir)
rescue Errno::EACCES
end
counter = 0
Dir[Dir.pwd+'/*'].each{|x|
#puts Dir.pwd
if File.directory?(x) then
self.gen_list(x) do |y|
yield y
end
else if File.basename(x).match('.mp3') then
begin
Mp3Info.open(x) do |y|
yield [x,y.tag.title,y.tag.album,y.tag.artist]
end
rescue Mp3InfoError
end
end
end
}
Dir.chdir(prev_pwd)
end
这是生成列表并将标签发送到 &block 数据存储在数据库中的方法。