Windows Media Audioのタグを頼りにフォルダ作ってファイル名変更して整理する
一部 ruby の wmainfo でタグ情報を読んだ時にエラーが出る。
iconv が UTF-8 の変換で失敗する。なぜに?
# checking wma tag informaiton and rename from tag infomation require 'rubygems' require 'wmainfo' require 'find' require 'fileutils' require 'kconv' search_path = ARGV.shift dest_path = ARGV.shift dest_path = search_path if dest_path.nil? col_name = ['AlbumTitle', 'AlbumArtist', 'TrackNumber', 'Author', 'Title'] log = File.open("log.csv", "w") log.print 'FileName,' + col_name.join(',') + "\n" Find.find(search_path) do |filename| next unless filename.match(/\.(ASF|asf|wma|WMA)$/) if FileTest.directory?(filename) then print filename, "\n" next end begin log.print filename, "," print filename, "\n" wma = WmaInfo.new(filename, :encoding=>"UTF-8") tmp = [] col_name.each do |col| tmp << wma.tags[col] end log.print tmp.join(',') new_name = [] new_path = [] if (artist = wma.tags['AlbumArtist'].to_s).size > 0 then new_path << artist elsif (artist = wma.tags['Author'].to_s).size > 0 then new_path << artist end if (album = wma.tags['AlbumTitle'].to_s).size > 0 then new_path << album end if (track = wma.tags['TrackNumber'].to_s).size > 0 then new_name << sprintf("%02d", track) end if wma.tags['Title'].to_s.size > 0 then new_name << wma.tags['Title'].to_s else next end rescue log.print $!, "\n" next end new_name = (new_name.join(' - ') + '.wma').tosjis new_path = (dest_path + '\\' + new_path.join('\\')).tosjis new_name.gsub!(/[\/:<>\\\*\?\"|]/, '_') if new_name.match(/[\/:<>\\\*\?\"|]/) new_name = new_path + '\\' + new_name if FileTest.exist?(new_name) then log.print("don't move\n") print "don't move\n" next else p new_path FileUtils.mkdir_p(new_path) if !FileTest.exist?(new_path) FileUtils.mv(filename, new_name) print new_name,"\n" log.print "," + new_name + "\n" end end
下に書いたmp3バージョンはフォルダ分類はしてなかった。
だいぶ前に作ったやつだから動作忘れてた。