]> diplodocus.org Git - flac-archive/blob - fa-tags
No longer use CDDBURL environment variable.
[flac-archive] / fa-tags
1 #! /usr/bin/env perl
2
3 # $Id$
4
5 # See fa-flacd for documentation.
6
7 use strict;
8 use warnings;
9
10 use Env qw(
11 CDDEV
12 );
13
14 use Getopt::Long;
15 use Pod::Usage;
16
17 use MusicBrainz::Client::Simple;
18
19 my $help;
20 GetOptions(
21 'help|h|?' => \$help,
22 ) or pod2usage();
23 $help and pod2usage(-exitstatus=>0, -verbose=>1);
24
25 my $trackcount = shift or pod2usage();
26
27 my $mb;
28 if (defined($CDDEV)) {
29 $mb = new MusicBrainz::Client::Simple (device=>$CDDEV);
30 } else {
31 $mb = new MusicBrainz::Client::Simple;
32 }
33
34 my @result = $mb->lookup_cd;
35 die($mb->get_error) unless $mb->success;
36
37 open(F, '>candidate-tags-0') or die("open('>candidate-tags-0'): $!");
38 print(F "$_=\n") for ('ARTIST', 'ALBUM', 'DATE');
39 print(F "TITLE=\n") for 1 .. $trackcount;
40 close(F) or die("close('>candidate-tags-0'): $!");
41
42 my $i;
43 for my $album (@result) {
44 $i++;
45 open(F, '>', "candidate-tags-$i") or die("open('>candidate-tags-$i'): $!");
46
47 print(F 'ARTIST=', $album->get_artist->get_name, "\n");
48 print(F 'ALBUM=', $album->get_name, "\n");
49
50 # MusicBrainz doesn't have dates yet; these are usually wrong anyway.
51 print(F "DATE=\n");
52
53 my @tracks = $album->get_tracks;
54 my $name;
55 my $track;
56 for my $j (1 .. $trackcount) {
57 if ($track = shift(@tracks)) {
58 $name = $track->get_name;
59 } else {
60 $name = '';
61 }
62 print(F "TITLE=$name\n");
63 }
64
65 close(F) or die("close('>candidate-tags-$i'): $!");
66 }