def parse_id3(mp3_file)
fields_and_sizes = [[:track_name, 30], [:artist_name, 30],
[:album_name, 30], [:year, 4], [:comment, 30],
[:genre, 1]]
tag = {}
open(mp3_file) do |f|
f.seek(-128, File::SEEK_END)
if f.read(3) == 'TAG' # An ID3 tag is present
fields_and_sizes.each do |field, size|
data = f.read(size).gsub(/\000.*/, '')
data = data[0] if field == :genre
tag[field] = data
end
end
end
return tag
end
parse_id3('ID3.mp3')
|