Index: /trunk/cuesheet2tocdata
===================================================================
--- /trunk/cuesheet2tocdata	(revision 26)
+++ /trunk/cuesheet2tocdata	(revision 27)
@@ -2,40 +2,10 @@
 use strict;
 
-# XXX: does this every vary?
-# or is the lead-in always 88200 samples (88200 / 588 = 150)?
-use constant SECTOR_OFFSET => 150;  # the lead-in, in frames
+use FindBin qw{$RealBin};
+use lib "$RealBin/lib";
 
-# conversion factors
-use constant FRAMES_PER_SECOND => 75;
-use constant SECONDS_PER_MINUTE => 60;
+use Tracks;
 
-# see also http://flac.sourceforge.net/format.html#cuesheet_track
-# 588 samples/frame = 44100 samples/sec / 75 frames/sec
-use constant SAMPLES_PER_FRAME => 588;
-
-my @sectors;
-my $total_sectors;
-while (<>) {
-    if (/INDEX 01/) {
-        my ($m,$s,$f) = /INDEX 01 (\d\d):(\d\d):(\d\d)/;
-        push @sectors, ($m * SECONDS_PER_MINUTE * FRAMES_PER_SECOND) + ($s * FRAMES_PER_SECOND) + $f + SECTOR_OFFSET;
-    } elsif (/lead-out/) {
-        my ($total_samples) = /lead-out \d+ (\d+)/;
-        $total_sectors = ($total_samples / SAMPLES_PER_FRAME) + SECTOR_OFFSET;
-    }
-}
-
-# this is a CD TOC suitable for submitting to MusicBrainz as a CD Stub
-# http://musicbrainz.org/doc/XML_Web_Service#Submitting_a_CDStub
-my @toc_data = (
-    1,                # first track number
-    scalar(@sectors), # last track number
-    $total_sectors,   # last frame (sector?)
-    @sectors,         # start frame for each track
-);
-
-my $url = q{http://musicbrainz.org/bare/cdlookup.html?toc=} . join('+', @toc_data);
-
-print "$url\n";
-#print join(' ', @toc_data) . "\n";
-#print "$_\n" foreach @toc_data;
+my $tracks = Tracks->new;
+$tracks->read_cue(shift || '-');
+print "http://musicbrainz.org/bare/cdlookup.html?toc=" . join("+", $tracks->get_musicbrainz_tocdata) . "\n";
