# Helper script for abcde to work with the MusicBrainz WS API (v2)
use strict;
-use encoding "utf8";
+use utf8;
use POSIX qw(ceil);
use Digest::SHA;
use MusicBrainz::DiscID;
$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) {
my $a_artist = $release->artist()->name();
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