#!/usr/bin/env perl
# Display the disc information for any mounted CDs on an OS X system.
use warnings;
use strict;
use lib qw(./lib);
use Mac::PropertyList qw(parse_plist_file);
use CDDB;
my $cddb = CDDB->new();
CD: foreach my $toc_name (</Volumes/*/.TOC.plist>) {
my $toc = parse_plist_file($toc_name);
my @toc;
foreach my $track (@{$toc->{'Sessions'}[0]{'Track Array'}}) {
my $number = $track->{'Point'}->value();
my $block = $track->{'Start Block'}->value();
push @toc, "$number 0 0 $block";
}
push @toc, '999 0 0 ' . $toc->{'Sessions'}[0]{'Leadout Block'}->value();
my @discs = $cddb->get_discs_by_toc(@toc);
unless (@discs) {
warn "$toc_name = no discs found";
next CD;
}
foreach my $disc (@discs) {
my ($genre, $id, $title) = @$disc;
my $disc_details = $cddb->get_disc_details($genre, $id);
delete $disc_details->{xmcd_record}; # for display
use YAML::Syck; print YAML::Syck::Dump($disc_details);
}
}