Changeset 27 in flacrip for trunk


Ignore:
Timestamp:
10/31/14 21:32:33 (9 years ago)
Author:
peter
Message:

cuesheet2tocdata uses the Tracks library instead of duplicating the code for reading the cuesheet and generating the MusicBrainz TOC lookup data

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/cuesheet2tocdata

    r1 r27  
    22use strict; 
    33 
    4 # XXX: does this every vary? 
    5 # or is the lead-in always 88200 samples (88200 / 588 = 150)? 
    6 use constant SECTOR_OFFSET => 150;  # the lead-in, in frames 
     4use FindBin qw{$RealBin}; 
     5use lib "$RealBin/lib"; 
    76 
    8 # conversion factors 
    9 use constant FRAMES_PER_SECOND => 75; 
    10 use constant SECONDS_PER_MINUTE => 60; 
     7use Tracks; 
    118 
    12 # see also http://flac.sourceforge.net/format.html#cuesheet_track 
    13 # 588 samples/frame = 44100 samples/sec / 75 frames/sec 
    14 use constant SAMPLES_PER_FRAME => 588; 
    15  
    16 my @sectors; 
    17 my $total_sectors; 
    18 while (<>) { 
    19     if (/INDEX 01/) { 
    20         my ($m,$s,$f) = /INDEX 01 (\d\d):(\d\d):(\d\d)/; 
    21         push @sectors, ($m * SECONDS_PER_MINUTE * FRAMES_PER_SECOND) + ($s * FRAMES_PER_SECOND) + $f + SECTOR_OFFSET; 
    22     } elsif (/lead-out/) { 
    23         my ($total_samples) = /lead-out \d+ (\d+)/; 
    24         $total_sectors = ($total_samples / SAMPLES_PER_FRAME) + SECTOR_OFFSET; 
    25     } 
    26 } 
    27  
    28 # this is a CD TOC suitable for submitting to MusicBrainz as a CD Stub 
    29 # http://musicbrainz.org/doc/XML_Web_Service#Submitting_a_CDStub 
    30 my @toc_data = ( 
    31     1,                # first track number 
    32     scalar(@sectors), # last track number 
    33     $total_sectors,   # last frame (sector?) 
    34     @sectors,         # start frame for each track 
    35 ); 
    36  
    37 my $url = q{http://musicbrainz.org/bare/cdlookup.html?toc=} . join('+', @toc_data); 
    38  
    39 print "$url\n"; 
    40 #print join(' ', @toc_data) . "\n"; 
    41 #print "$_\n" foreach @toc_data; 
     9my $tracks = Tracks->new; 
     10$tracks->read_cue(shift || '-'); 
     11print "http://musicbrainz.org/bare/cdlookup.html?toc=" . join("+", $tracks->get_musicbrainz_tocdata) . "\n"; 
Note: See TracChangeset for help on using the changeset viewer.