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])