JID3 - A JavaTM ID3 Class Library Implementation
Copyright ©2003-2005 Paul Grebenc
JID3 is a class library, written in Java and licensed
under the LGPL, which provides the required functionality for editing ID3 tags
commonly used in MP3 media files.
- Add support for adding UnknownID3V2Frame objects to an ID3V2_3_0Tag when in
non-strict mode. This allows the option of including custom frame types not specified in the formal standard.
- MediaFile now also accepts a class that implements IFileSource in its
constructor, to allow tags to be read from non-java.io.File sources.
- Thanks to Matt Todd for suggesting this feature.
- Handle an empty owner identifier string in ENCR v2.3.0 frames when reading
from a file.
- Thanks to Andreas Mandel for reporting this issue.
- In v2.3.0 convenience methods that never throw exceptions, remove reference
in method signatures.
- Thanks to Simon Raaf for reporting this issue.
- Add work-around for bug in MixMeister BPM Analyzer. It write values into
the TBPM frame as a floating point value, despite the requirement in the ID3 specification that they be
integer values only. With this fix, floating point values will be read but converted to integer values.
- Thanks to Henning Koch for reporting this issue.
- Add work-around for bug in MP3ext Windows explorer extension. It corrupts
ID3 v2 tags by repeatedly writing an advertisement for itself (ie. "MP3ext V3.3.18(unicode)") in the tag
padding, which violates the ID3 specification's requirement that padding contain only nulls.
- Thanks to Artur Siurdyban for reporting this issue.
- Fix byte overflow in ID3V1Tag.Genre.getByteValue() when value is greater than 127.
- Add Undefined V1 Genre, which is sometimes used as a dummy to indicate no genre has been specified.
- Thanks to Gerard Naude for reporting these bugs.
- Add missing Nullsoft ID3V1 genres that were not included in the ID3 specification.
- Fix potential bug related to InputStream.skip() not necessarily skipping as many bytes as requested on the first try.
- Thanks to Aaron St. John for suggesting this patch.
- Change package name prefix from org.blinkenlights.id3 to org.blinkenlights.jid3.
- Change class names ending in "Tags" to end in "Tag" (ie. ID3V1_1Tags is now ID3V1_1Tag).
- Include build.xml file to build with ant.
- Source, jar and javadocs now bundled together in one download.
- Finish support for unknown v2.3.0 frames (call getUnknownFrames() in ID3V2_3_0Tags).
- Support for frames with invalid IDs (in particular, because iTunes inserts a frame with an invalid frame ID). When reading in non-strict mode, these frames are read as UnknownID3V2Frame objects. An exception is thrown when an invalid frame ID is encountered, in strict mode.
- Fix bug in getArtist() in ID3V2_3_0Tags, in cases where more than one lead performer is specified.
- Cleaned up constructors for frames that require a byte array as argument.
- Thanks to Paul Lamere for reporting the iTunes and getArtist() bugs.
- Provide support for using the visitor pattern to visit v1 and v2 tags, and v2 frames.
- Add toString() method to ContentType.Genre.
- Use buffered streams where helpful.
- Use streams instead of readers/writers when copying/comparing files.
- Comment field in v1.1 tag should be a maximum of 28 bytes followed by a null, not 29 bytes without null.
- getAlbum(), getGenre() and getComment() in ID3V2_3_0Tags return null if not set instead of throwing an exception.
- Thanks to Vladimir A. Democh for this patch.
- Add tag display option to command line utility.
- Add padding to v2.3.0 tags by default, to prevent Winamp from missing the last frame in the tag.
- Add methods to set and get the default padding length adding to new v2.3.0 frames. (The default is 16 bytes.)
- Change toString() method of ID3V1Tags to represent the genre as its descriptive string, when known.
- Minor additions to the toString() method of the ID3V2Tags class.
- Add code to enforce restrictions on updates to frames where specified (ie. each AENC frame in a tag must have a unique owner identifier).
- Add new set methods to some frames.
- Various minor improvements.
- Add V2 support for encryption of frames.
- Fix typo in V1 "Hip-Hop" genre.
- Add removeTags, removeID3V1Tags and removeID3V2Tags methods to MediaFile.
- Fix rewriting of V2 tag.
- Do not throw an exception in non-strict mode if duplicate frames are encountered where not allowed. Ignore all but the last duplicate read.
- Make getID3V1Tags and getID3V2Tags methods public.
- Fix several problems with empty strings in frame fields.
- Add toString method to v1 Genre class.
- Add useStrict and usingStrict methods to ID3Tags class. When in strict mode, reading a tag with a corrupt frame generates an exception. When in non-strict mode, corrupt frames are ignored where possible.
- Better exception handling.
- Fix handling of v1 track numbers over 127.
- Fix frame length encoding in v2 tags.
- Finish support for a command line utility to set MP3 tag values.
- Accept null short description in constructor of v2.3.0 COMM frames.
- Fix bug in v1 and v1.1 tags when not all tag values were set.
- Add utility method to v1 Genre to allow parsing of genre strings where supported.
- Partial support for a command line utility to set MP3 tag values.
- Add support for Unicode text encoding.
- Require that v2 tags contain at least one frame to be written.
- Add missing support for USLT V2.3.0 frames.
- Fix extended header code.
- Add ability to support extended header with CRC value.
- Add missing accessor methods to TRCKTextInformationID3V2Frame class.
- Add convenience methods to easily set/get v1-equivalent attributes in v2 tags.
- Added support for unsynchronization in v2.3.0 tags.
- More efficient file copy methods when sync'ing files.
- Fill in v2.3.0 tag method javadocs.
- Tim Boldt
- Vladimir A. Democh
- Eish Dhillon
- Andreas Grunewald
- Henning Koch
- Paul Lamere
- Andreas Mandel
- Kyle Morse
- Gerard Naude
- Andrew Newman
- Simon Raaf
- Aaron St. John
- Artur Siurdyban
- Matt Todd
Java and all Java-based trademarks and logos are trademarks or registered trademarks of Sun Microsystems,Inc. in the United States and other countries.