From: Eugene Kalenkovich Date: 2007-08-27T14:10:12+09:00 Subject: [QUIZ][SOLUTION] ID3 Tags (#136) def fileTail (file, offset) f=File.new(file) f.seek(-offset,IO::SEEK_END) f.read end class ID3Tag GENRES=["Blues","Classic Rock","Country","Dance","Disco","Funk","Grunge","Hip-Hop", "Jazz","Metal","New Age","Oldies","Other","Pop","R&B","Rap","Reggae","Rock", "Techno","Industrial","Alternative","Ska","Death Metal","Pranks","Soundtrack", "Euro-Techno","Ambient","Trip-Hop","Vocal","Jazz+Funk","Fusion","Trance", "Classical","Instrumental","Acid","House","Game","Sound Clip","Gospel", "Noise","AlternRock","Bass","Soul","Punk","Space","Meditative", "Instrumental Pop","Instrumental Rock","Ethnic","Gothic","Darkwave", "Techno-Industrial","Electronic","Pop-Folk","Eurodance","Dream", "Southern Rock","Comedy","Cult","Gangsta","Top 40","Christian Rap","Pop/Funk", "Jungle","Native American","Cabaret","New Wave","Psychadelic","Rave", "Showtunes","Trailer","Lo-Fi","Tribal","Acid Punk","Acid Jazz","Polka", "Retro","Musical","Rock & Roll","Hard Rock","Folk","Folk-Rock", "National Folk","Swing","Fast Fusion","Bebob","Latin","Revival","Celtic", "Bluegrass","Avantgarde","Gothic Rock","Progressive Rock","Psychedelic Rock", "Symphonic Rock","Slow Rock","Big Band","Chorus","Easy Listening","Acoustic", "Humour","Speech","Chanson","Opera","Chamber Music","Sonata","Symphony", "Booty Bass","Primus","Porn Groove","Satire","Slow Jam","Club","Tango", "Samba","Folklore","Ballad","Power Ballad","Rhythmic Soul","Freestyle", "Duet","Punk Rock","Drum Solo","A capella","Euro-House","Dance Hall"] attr_reader :title, :artist, :album, :year, :comment, :genre, :track def initialize fname tag,@title,@artist,@album,@year,@comment,@genre=fileTail(fname,128).unpack "A3A30A30A30A4A30C" raise "No ID3 Info" if tag!='TAG' s_com,flag,track=@comment.unpack "A28CC" if flag==0 and track!=0 @comment=s_com @track=track end @genre=GENRES[@genre] @genre="Unknown" if !@genre end end p ID3Tag.new(ARGV[0])