-
Notifications
You must be signed in to change notification settings - Fork 4
Ruby bindings for Taglib's C Library - Packaged as gem
fairtilizer/ruby-taglib2
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
ruby-taglib2 is a compiled extension to ruby that provides access to the TagLib library. ruby-taglib2 optionally uses the Mahoro library when available for much more accurate detection of file formats (TagLib without Mahoro just looks at the last few characters of the file name, while Mahoro looks at the content). ruby-taglib and ruby-taglib2: http://www.hakubi.us/ruby-taglib/ TagLib: http://developer.kde.org/~wheeler/taglib.html Mahoro: http://mahoro.rubyforge.org/ ############# Installation# ############# gem install ruby-taglib2 (gemcutter.org) ####### Modules ####### TagLib2 ####### Classes ####### TagLib2::File - The central class that users of ruby-taglib2 will always use TagLib2::Image - Stores information about images embedded in tags, can be gotten through methods of TagLib2::File TagLib2::FileRef - Internal use only TagLib2::BadFile - Exception thrown when the file passed to TagLib2::File's initializer cannot be loaded ####### Methods ####### All strings are to be in UTF8 format. Set KCODE to u when necessary. TagLib2::File#title(string) TagLib2::File#title=(string) - Get and set the title of a file TagLib2::File#artist(string) TagLib2::File#artist=(string) - Get and set the artist of a file TagLib2::File#album(string) TagLib2::File#album=(string) - Get and set the album the file is from TagLib2::File#comment(string) TagLib2::File#comment=(string) - Get and set a comment about the file TagLib2::File#genre(string) TagLib2::File#genre=(string) - Get and set a comment about the file TagLib2::File#year(num) TagLib2::File#year=(num) - Get and set the year of the file TagLib2::File#track(num) TagLib2::File#track=(num) - Get and set the the track number of the file on the album TagLib2::File#bitrate TagLib2::File#sampleRate TagLib2::File#sample_rate TagLib2::File#channels TagLib2::File#length - Get properties of the audio in the file TagLib2::File#save - Save all changes to the tag TagLib2::File#each_image TagLib2::File#eachImage - Iterator over all images stored in the file's tag TagLib2::File#image_count TagLib2::File#imageCount - Number of images in the file's tag TagLib2::File#image(num) - Returns image #num in order from eachImage TagLib2::File#add_image(type, mimeType, description, data) TagLib2::File#addImage(type, mimeType, description, data) - Add an image type is an integer, the rest are strings. For a remote image, set data to nil and place the URL in mimeType. Otherwise mimeType should be image/jpeg or image/png. description may be set nil as well. TagLib2::File#remove_image(image) TagLib2::File#removeImage(image) - Remove an image from the tag, as returned by #image TagLib2::Image#type - Returns a number of the type TagLib2::Image#description - Returns a string of the description TagLib2::Image#mime_type TagLib2::Image#mimeType - Returns a the mimeType of the data, or a URL TagLib2::Image#data - Returns the actual image data, if mimeType is not a URL ###### Images ###### Image are only supported right now when in ID3v2 tags. Here is a list of what the picture type numbers mean: Picture type: 0x00 Other 0x01 32x32 pixels 'file icon' (PNG only) 0x02 Other file icon 0x03 Cover (front) 0x04 Cover (back) 0x05 Leaflet page 0x06 Media (e.g. label side of CD) 0x07 Lead artist/lead performer/soloist 0x08 Artist/performer 0x09 Conductor 0x0A Band/Orchestra 0x0B Composer 0x0C Lyricist/text writer 0x0D Recording Location 0x0E During recording 0x0F During performance 0x10 Movie/video screen capture 0x11 A bright coloured fish 0x12 Illustration 0x13 Band/artist logotype 0x14 Publisher/Studio logotype Except where noted, all images should be of type image/jpeg or image/png. ############# Sample of use ############# require 'taglib2' f = TagLib2::File.new(ARGV[0]) puts "Title: #{f.title}" puts "Comment: #{f.comment}" puts "Artist: #{f.artist}" puts "Album: #{f.album}" puts "Length: #{f.length}" puts "Sample Rate: #{f.sampleRate}" puts "Image Count: #{f.imageCount}" if f.imageCount > 0 puts "Image 0 MimeType: #{f.image(0).mimeType}" puts "Image 0 Type: #{f.image(0).type}" puts "Image 0 Description: #{f.image(0).description}" end if ARGV[1] == '-setTitle' puts "Setting Title to #{ARGV[2]}" f.title = ARGV[2] f.save end if ARGV[1] == '-dumpImage' puts "Dumping image" File::open(ARGV[3], 'w') do |file| file.write(f.image(ARGV[2].to_i).data) end f.save end if ARGV[1] == '-removeImage' puts "Removing image #{ARGV[2]}" f.removeImage(f.image(ARGV[2].to_i)) f.save end if ARGV[1] == '-addImage' puts "Adding image" puts "f.addImage(#{ARGV[2].to_i}, #{ARGV[3]}, #{ARGV[4]}, IO::read(#{ARGV[5]}))" f.addImage(ARGV[2].to_i, ARGV[3], ARGV[4], IO::read(ARGV[5])) f.save end
About
Ruby bindings for Taglib's C Library - Packaged as gem
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published