]> diplodocus.org Git - flac-archive/commitdiff
(run_or_die): Print command if verbose mode.
authorepg <>
Sun, 5 Dec 2004 07:10:57 +0000 (07:10 +0000)
committerepg <>
Sun, 5 Dec 2004 07:10:57 +0000 (07:10 +0000)
(flac2mp3): Pass --quiet and --verbose options to flac and lame as
appropriate.  If --lame-options given, also pass those to lame.
Previously --preset standard was hard-coded, now it is just the
default if --lame-options is not given.

(MAIN): Now take options: --lame-options, -q/--quiet, -v/--verbose,
and -h/--help.

flac2mp3

index 17452bf..88ed955 100755 (executable)
--- a/flac2mp3
+++ b/flac2mp3
@@ -8,7 +8,7 @@ B<flac2mp3> - transcode FLAC file to MP3 files
 
 =head1 SYNOPSIS
 
-B<flac2mp3> I<file>
+B<flac2mp3> [B<--lame-options> I<lame-options>] [B<-q>] [B<-v>] I<file>
 
 =head1 DESCRIPTION
 
@@ -24,11 +24,18 @@ use warnings;
 
 use POSIX ':sys_wait_h';
 use Pod::Usage;
+use Getopt::Long qw(:config gnu_getopt no_ignore_case);
+
+my $flac_options;
+my $lame_options;
+my $quiet;
+my $verbose;
 
 sub run_or_die {
     my $command = shift;
     my $status;
 
+    $verbose and print(STDERR "$command\n");
     $status = system($command);
 
     if (WIFEXITED($status)) {
@@ -123,8 +130,24 @@ sub flac2mp3 {
     my $track = shift;
     my $skip_arg = shift;
     my $until_arg = shift;
+    my @tmp;
     my $outfile;
 
+    if ($quiet) {
+        $flac_options = '--silent';
+    } else {
+        $flac_options = '';
+    }
+
+    if ($lame_options) {
+        push(@tmp, $lame_options);
+    } else {
+        push(@tmp, '--preset standard');
+    }
+    $quiet and push(@tmp, '--quiet');
+    $verbose and push(@tmp, '--verbose');
+    $lame_options = join(' ', @tmp);
+
     # We'll be putting these in single quotes, so we need to escape
     # any single quotes in the filename by closing the quote ('),
     # putting an escaped quote (\'), and then reopening the quote (').
@@ -136,12 +159,21 @@ sub flac2mp3 {
     $outfile =~ s/\//_/g;
 
     $until_arg ||= '';
-    run_or_die(join(' ', "flac -cd $skip_arg $until_arg '$fn'",
-                    " | lame --preset standard --tt '$title' --ta '$artist'",
+    run_or_die(join(' ', "flac $flac_options -cd $skip_arg $until_arg '$fn'",
+                    " | lame $lame_options --tt '$title' --ta '$artist'",
                     " --tl '$album' --ty '$date' --tn $track - '$outfile'"));
 }
 
 MAIN: {
+    my $help;
+    GetOptions(
+               'lame-options=s', \$lame_options,
+               'quiet|q' => \$quiet,
+               'verbose|v' => \$verbose,
+               'help|h|?' => \$help,
+              ) or pod2usage();
+    $help and pod2usage(-exitstatus=>0, -verbose=>1);
+
     my $fn = shift or pod2usage();
     my @args = get_decode_args($fn);
     my ($artist, $album, $date, @titles) = get_tags($fn);
@@ -155,6 +187,28 @@ MAIN: {
 \f
 __END__
 
+=head1 OPTIONS
+
+=over 4
+
+=item B<--lame-options> I<lame-options>
+
+Pass I<lame-options> to B<lame>.  This ends up being passed to the
+shell, so feel free to take advantage of that.  You'll almost
+certainly have to put I<lame-options> in single quotes.
+
+=item B<-q> [B<--quiet>]
+
+Suppress status information.  This option is passed along to B<flac>
+and B<lame>.
+
+=item B<-v> [B<--verbose>]
+
+Print diagnostic information.  This option is passed along to B<flac>
+and B<lame>.
+
+=back
+
 =head1 AUTHORS
 
 Written by Eric Gillespie <epg@pretzelnet.org>.