]>
diplodocus.org Git - flac-archive/blob - fa-encode
5 B<fa-encode> - encode WAV files to FLAC
9 B<fa-encode> [B<-d> I<artist-directory>] B<input-directory>
11 I<artist-directory> defaults to the album B<ARTIST> in the tags file; one of
18 package epg
::flac
::archive
::encode
;
25 require "$FindBin::Bin/tags.p";
26 epg
::flac
::archive
::tags-
>import(
35 my $input_directory = shift;
36 my $fn = "$input_directory/tags";
37 open(my $fh, '<', $fn) || die("open($fn): $!");
38 my ($album, $tracks) = read_tags
($fh);
39 if (!defined($album->{ALBUM
}) || scalar(@{$album->{ALBUM
}}) != 1) {
40 die('exactly one ALBUM tag required')
42 my $album_tag = $album->{ALBUM
}->[0];
44 if (!defined($album->{ARTIST
}) || scalar(@{$album->{ARTIST
}}) != 1) {
45 die('exactly one ARTIST tag required')
47 my $artist = $album->{ARTIST
}->[0];
50 if (defined($album->{DATE
})) {
51 if (scalar(@{$album->{DATE
}}) != 1) {
52 die('one or zero DATE tags required')
54 $date = $album->{DATE
}->[0];
57 if (defined($album->{DISCNUMBER
})) {
58 if (scalar(@{$album->{DISCNUMBER
}}) != 1) {
59 die('one or zero DISCNUMBER tags required')
61 @discnumber = ($album->{DISCNUMBER
}->[0]);
64 my $dir = join('/', '..', mangle_for_file_name
($artist), mangle_for_file_name
($album_tag));
67 say('mkdir -p ', quote
($dir));
69 for my $track (@$tracks) {
71 if (!defined($track->{TITLE
}) || scalar(@{$track->{TITLE
}}) < 1) {
72 die("at least one TITLE required for track $tracknum")
74 $track->{ALBUM
} = $album->{ALBUM
};
75 $track->{TRACKNUMBER
} = [$tracknum];
76 if (!defined($track->{ARTIST
}) && defined($album->{ARTIST
})) {
77 $track->{ARTIST
} = $album->{ARTIST
};
80 $track->{DATE
} = [$date];
83 $track->{DISCNUMBER
} = \
@discnumber;
85 my $title = join(' ', @{$track->{TITLE
}});
86 my $tracknum_s = two_digits
($tracknum);
90 (map { two_digits
($_) } @discnumber),
92 mangle_for_file_name
($title) . '.flac',
95 -e
$fn && die("cowardly refusing to clobber $fn");
96 my @pictures = ('--picture', quote
('3|image/jpeg|||cover.front.jpeg')); # TODO optional
100 '--delete-input-file',
108 ('-T', quote
($name . '=' . $_))
110 } sort(keys(%$track))),
111 "track$tracknum_s.cdda.wav"
114 say('rm tags cover.front.jpeg');