def iconv(src,conv) str='' begin str=conv.iconv(src) rescue Iconv::InvalidCharacter => err p err p err.success str=err.success ensure str << conv.iconv(nil) end str end
def getCDinfo result=nil [ ['freedbtest.dyndns.org','/~cddb/cddb.cgi'], ['www.freedb2.org','/~cddb/cddb.cgi'], ].each{|server| result=getCDinfo2(server) break if result!=nil } return result end
def createCUE(tocfilename) oldfilename='' tracks=[] open(tocfilename,"r") {|fs| fs.read.split("\n").each{|l| l.chomp.strip! if l=~/^FILE/ data=l.split(/ +/)[1..3] oldfilename=data[0][1..-2] data[1]='00:00:00' if data[1]=='0' tracks << [data[1],data[2]] end } } return if tracks.size<=0 cdinfo=getCDinfo return if !cdinfo filename2=iconvfs(cdinfo[:filename])
result=<<EOD REM GENRE "#{iconvcue(cdinfo[:genre])}" REM DATE "#{cdinfo[:year]}" REM DISCID "#{cdinfo[:discid]}" TITLE "#{iconvcue(cdinfo[:title])}" PERFORMER "#{iconvcue(cdinfo[:artist])}" FILE "#{iconvcue(cdinfo[:filename])}.wav" WAVE EOD tracks.size.times{|i| result+=<<EOD TRACK #{format("%02d",i+1)} AUDIO TITLE "#{iconvcue(cdinfo[:tracks][i])}" PERFORMER "#{iconvcue(cdinfo[:artist])}" INDEX 01 #{tracks[i][0]} EOD } result.gsub!("\r",'') result.gsub!("\n","\r\n") open(filename2+'.cue',"w") {|fs| fs.print result } return filename2 end