$workdir = "/tmp";
}
+sub calc_sha1($) {
+ my $filename = shift;
+ my $s = Digest::SHA->new(1);
+ $s->addfile($filename);
+ return $s->hexdigest;
+}
if ($command =~ m/^id/) {
my $disc = new MusicBrainz::DiscID($device);
my $response = $ws->search({ DISCID => $discid });
my @releases = $response->release_list();
my $releasenum = 0;
+ my @sums;
foreach my $release (@releases) {
+ #print Dumper( $release->release_event_list() );
my $a_artist = $release->artist()->name();
+ my $a_date = substr (@{$release->release_event_list()->events()}[0]->date(), 0, 4);
my $va = 0;
if ($a_artist =~ /Various Artists/) {
$va = 1;
print OUT "#CATEGORY=none\n";
print OUT "DISCID=" . $discid . "\n";
print OUT "DTITLE=" . $a_artist. " / " . $release->title() . "\n";
- print OUT "DYEAR=\n";
+ print OUT "DYEAR=" . $a_date . "\n";
print OUT "DGENRE=\n";
my @tracks = @{$release->track_list()->tracks()};
}
}
- print OUT "EXTD=\n";
+ print OUT "EXTD=barcode=" . @{$release->release_event_list()->events()}[0]->barcode()
+ . " catalognumber=" . @{$release->release_event_list()->events()}[0]->catalog_number() . "\n";
for (my $i = 0; $i < scalar(@tracks); $i++) {
printf OUT "EXTT%d=\n", $i;
}
print OUT "PLAYORDER=\n";
print OUT ".\n";
close OUT;
+
+ # Check to see that this entry is unique; generate a checksum
+ # and compare to any previous checksums
+ my $checksum = calc_sha1("$workdir/cddbread.$releasenum");
+ foreach my $sum (@sums) {
+ if ($checksum eq $sum) {
+ unlink("$workdir/cddbread.$releasenum");
+ $releasenum--;
+ last;
+ }
+ }
+ push (@sums, $checksum);
}
} elsif ($command =~ m/calcid/) {
# Calculate MusicBrainz ID from disc offsets; see