Back to the Antelmann.com Java Framework Tutorial
The com.antelmann.cddb package provides a simple way to make use of the CDDB protocol in Java.
- under construction -
(contact info@antelmann.com for
clarifying content not provided here at this time)
Here is an example of how the library can be used to access CD information from a CDDB server using Java:
import com.antelmann.cddb.*;
public class CDTest
{
public static void main (String args[]) throws Exception {
CDDB cddb = new FreeDB();
// this object gives access to a physical CD-Drive on Win32
CDDrive drive = new CDDriveWin();
// cdid represents a CD that is constructed from the
// driver information of the physical CD driver object
CDID cdid = new CDID(drive);
// now the CDDB database is queried for entries for the given CD
// note that there may be more than one record for a given CD.
CDDBRecord[] records = cddb.queryCD(cdid);
// now go through all records and retrieve the information
for (int i = 0; i < records.length; i++) {
System.out.println("found record: " + records[i].toString());
// the implementation of FreeDB happens to
// return a CDDBEntry object, so you could
// simply cast the return value, but it's not
// necessary.
CDInfo info = cddb.readCDInfo(records[i]);
// an alternative to casting is now creating
// the CDDBEntry object based on the available info:
CDDBEntry entry = new CDDBEntry(info.getCDDBRecord(), info.getXmcdContent());
// now you can extract whatever info you want; e.g.:
Track[] tracks = entry.extractTracks(true);
for (int n = 0; n < tracks.length; n++) {
System.out.println(tracks[n].getTrackNo() + " " + tracks[n].getTitle());
}
Artist artist = entry.extractCDArtist();
// etc. etc. ..
// another alternative is using a CDInfo object through a parser;
// ultimately, such a parser is used to construct all the Track
// objects etc. in the CDDBEntry implementation
CDDBXmcdParser parser = new CDDBXmcdParser(info.getXmcdContent());
Track t = new Track(cdid, 0, parser.readTrackTitle(0), parser.readTrackExtension(0));
String genre = parser.readGenre();
// etc. etc. ..
}
}
}
(c) Holger Antelmann <info@antelmann.com>
- all rights reserved