Class TagLib::ID3v2::Tag
In: lib/TagLib_doc.rb
Parent: TagLib::Tag
AudioProperties Properties Properties Properties Properties Properties Properties Properties File File File File File File File Tag Tag Tag Tag XiphComment File File File Frame AttachedPictureFrame CommentsFrame Header ByteVectorList ByteVector FrameList ItemListMap GenreMap FileRef FrameListMap StringList FieldListMap String Item Footer FrameFactory GeneralEncapsulatedObjectFrame Page PageHeader XingHeader Header MPC APE Vorbis ID3v1 FLAC ID3v2 Flac Speex Ogg MPEG WavPack TrueAudio TagLib dot/f_3.png

The main class in the ID3v2 implementation. .

This is the main class in the ID3v2 implementation. It serves two functions. This first, as is obvious from the public API, is to provide a container for the other ID3v2 related classes. In addition, through the read() and parse() protected methods, it provides the most basic level of parsing. In these methods the ID3v2 tag is extracted from the file and split into data components.ID3v2 tags have several parts, TagLib attempts to provide an interface for them all. header(), footer() and extendedHeader() corespond to those data structures in the ID3v2 standard and the APIs for the classes that they return attempt to reflect this.Also ID3v2 tags are built up from a list of frames, which are in turn have a header and a list of fields. TagLib provides two ways of accessing the list of frames that are in a given ID3v2 tag. The first is simply via the frameList() method. This is just a list of pointers to the frames. The second is a map from the frame type — i.e. "COMM" for comments — and a list of frames of that type. (In some cases ID3v2 allows for multiple frames of the same type, hence this being a map to a list rather than just a map to an individual frame.)More information on the structure of frames can be found in the ID3v2::Frame class.read() and parse() pass binary data to the other ID3v2 class structures, they do not handle parsing of flags or fields, for instace. Those are handled by similar functions within those classes.All pointers to data structures within the tag will become invalid when the tag is destroyed. Dealing with the nasty details of ID3v2 is not for the faint of heart and should not be done without much meditation on the spec. It's rather long, but if you're planning on messing with this class and others that deal with the details of ID3v2 (rather than the nice, safe, abstract TagLib::Tag and friends), it's worth your time to familiarize yourself with said spec (which is distrubuted with the TagLib sources). TagLib tries to do most of the work, but with a little luck, you can still convince it to generate invalid ID3v2 tags. The APIs for ID3v2 assume a working knowledge of ID3v2 structure. You're been warned.

Methods

addFrame   album   album=   artist   artist=   comment   comment=   empty?   frameList   frameListMap   genre   genre=   header   isEmpty   setAlbum   setArtist   setComment   setGenre   setTitle   setTrack   setYear   title   title=   track   track=   year   year=  

Public Instance methods

Add a frame to the tag. At this point the tag takes ownership of the frame and will handle freeing its memory.Using this method will invalidate any pointers on the list returned by frameList()

[Source]

# File lib/TagLib_doc.rb, line 867
          def addFrame(Frame  frame)
          end

Returns the album name; if no album name is present in the tag String::null will be returned.

[Source]

# File lib/TagLib_doc.rb, line 837
          def album()
          end

[Source]

# File lib/TagLib_doc.rb, line 844
          def album=()
          end

Returns the artist name; if no artist name is present in the tag String::null will be returned.

[Source]

# File lib/TagLib_doc.rb, line 949
          def artist()
          end

[Source]

# File lib/TagLib_doc.rb, line 822
          def artist=()
          end

Returns the track comment; if no comment is present in the tag String::null will be returned.

[Source]

# File lib/TagLib_doc.rb, line 879
          def comment()
          end

[Source]

# File lib/TagLib_doc.rb, line 883
          def comment=()
          end

[Source]

# File lib/TagLib_doc.rb, line 881
          def empty?()
          end

Returns the frame list for frames with the id frameID or an empty list if there are no frames of that type. This is just a convenience and is equivalent to:frameListMap()[frameID]; frameListMap()

[Source]

# File lib/TagLib_doc.rb, line 939
          def frameList( ByteVector  frameID)
          end

Returns a reference to the frame list map. This is an FrameListMap of all of the frames in the tag.This is the most convenient structure for accessing the tag's frames. Many frame types allow multiple instances of the same frame type so this is a map of lists. In most cases however there will only be a single frame of a certain type.Let's say for instance that you wanted to access the frame for total beats per minute — the TBPM frame.TagLib::MPEG::Filef("foo.mp3");

//ChecktomakesurethatithasanID3v2tag

if(f.ID3v2Tag()){

//Getthelistofframesforaspecificframetype

TagLib::ID3v2::FrameListl=f.ID3v2Tag()->frameListMap()["TBPM"];

if(!l.isEmpty()) std::cout<<l.front()->toString()<<std::endl; } You should not modify this data structure directly, instead use addFrame() and removeFrame(). frameList()

[Source]

# File lib/TagLib_doc.rb, line 908
          def frameListMap()
          end

Returns the genre name; if no genre is present in the tag String::null will be returned.

[Source]

# File lib/TagLib_doc.rb, line 861
          def genre()
          end

[Source]

# File lib/TagLib_doc.rb, line 869
          def genre=()
          end

Returns a pointer to the tag's header.

[Source]

# File lib/TagLib_doc.rb, line 925
          def header()
          end

Returns true if the tag does not contain any data. This should be reimplemented in subclasses that provide more than the basic tagging abilities in this class.

[Source]

# File lib/TagLib_doc.rb, line 856
          def isEmpty()
          end

Sets the album to s. If s is String::null then this value will be cleared.

[Source]

# File lib/TagLib_doc.rb, line 849
          def setAlbum(   s)
          end

Sets the artist to s. If s is String::null then this value will be cleared.

[Source]

# File lib/TagLib_doc.rb, line 827
          def setArtist(   s)
          end

Sets the comment to s. If s is String::null then this value will be cleared.

[Source]

# File lib/TagLib_doc.rb, line 874
          def setComment(   s)
          end

Sets the genre to s. If s is String::null then this value will be cleared. For tag formats that use a fixed set of genres, the appropriate value will be selected based on a string comparison. A list of available genres for those formats should be available in that type's implementation.

[Source]

# File lib/TagLib_doc.rb, line 915
          def setGenre(   s)
          end

Sets the title to s. If s is String::null then this value will be cleared.

[Source]

# File lib/TagLib_doc.rb, line 932
          def setTitle(   s)
          end

Sets the track to i. If s is 0 then this value will be cleared.

[Source]

# File lib/TagLib_doc.rb, line 832
          def setTrack(uint i)
          end

Sets the year to i. If s is 0 then this value will be cleared.

[Source]

# File lib/TagLib_doc.rb, line 944
          def setYear(uint i)
          end

Returns the track name; if no track name is present in the tag String::null will be returned.

[Source]

# File lib/TagLib_doc.rb, line 920
          def title()
          end

[Source]

# File lib/TagLib_doc.rb, line 927
          def title=()
          end

Returns the track number; if there is no track number set, this will return 0.

[Source]

# File lib/TagLib_doc.rb, line 888
          def track()
          end

[Source]

# File lib/TagLib_doc.rb, line 910
          def track=()
          end

Returns the year; if there is no year set, this will return 0.

[Source]

# File lib/TagLib_doc.rb, line 842
          def year()
          end

[Source]

# File lib/TagLib_doc.rb, line 851
          def year=()
          end

[Validate]