Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Ruby interface to the id3lib C++ library for easily editing ID3 tags of MP3 audio files
C++ Ruby

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
ext
lib
test
web
.gitignore
CHANGES
INSTALL
README.rdoc
Rakefile
TODO
setup.rb
usage.rb

README.rdoc

id3lib-ruby

Please note: Unfortunately, id3lib is no longer maintained and outdated (no support for ID3v2.4). Therefore id3lib-ruby is no longer actively developed. Have a look at taglib-ruby for a possible alternative (also from yours truly):

robinst.github.com/taglib-ruby/

id3lib-ruby provides a Ruby interface to the id3lib C++ library for easily editing ID3 tags (v1 and v2) of MP3 audio files.

The class documentation starts at ID3Lib::Tag.

Features

  • Read and write ID3v1 and ID3v2 tags

  • Simple interface for adding, changing and removing frames

  • Quick access to common text frames like title and performer

  • Custom data frames like attached picture (APIC)

  • Pretty complete coverage of id3lib's features

  • UTF-16 support (warning: id3lib writes broken UTF-16 frames)

  • Windows binary gem available

The CHANGES file contains a list of changes between versions.

Installation

See INSTALL.

Online Information

The home of id3lib-ruby is id3lib-ruby.rubyforge.org

Usage

require 'rubygems'
require 'id3lib'

# Load a tag from a file
tag = ID3Lib::Tag.new('talk.mp3')

# Get and set text frames with convenience methods
tag.title  #=> "Talk"
tag.album = 'X&Y'
tag.track = '5/13'

# Tag is a subclass of Array and each frame is a Hash
tag[0]
#=> { :id => :TPE1, :textenc => 0, :text => "Coldplay" }

# Get the number of frames
tag.length  #=> 7

# Remove all comment frames
tag.delete_if{ |frame| frame[:id] == :COMM }

# Get info about APIC frame to see which fields are allowed
ID3Lib::Info.frame(:APIC)
#=> [ 2, :APIC, "Attached picture",
#=>   [:textenc, :mimetype, :picturetype, :description, :data] ]

# Add an attached picture frame
cover = {
  :id          => :APIC,
  :mimetype    => 'image/jpeg',
  :picturetype => 3,
  :description => 'A pretty picture',
  :textenc     => 0,
  :data        => File.read('cover.jpg')
}
tag << cover

# Last but not least, apply changes
tag.update!

Licence

This library has Ruby's licence:

www.ruby-lang.org/en/LICENSE.txt

Author

Robin Stocker <robinstocker at rubyforge.org>

Something went wrong with that request. Please try again.