X-Git-Url: https://diplodocus.org/git/flac-archive/blobdiff_plain/6aa2468770481c0e17a41760600b8a4eaff7a846..c47f24178a0ff695262801bf9ca9b0efc9fa56e6:/flac2mp3 diff --git a/flac2mp3 b/flac2mp3 index 2231b1f..abd8984 100755 --- a/flac2mp3 +++ b/flac2mp3 @@ -25,10 +25,7 @@ use warnings; use Pod::Usage; sub tformat { - my $min = shift; - my $sec = shift; - my $hun = shift; - return "$min:$sec.$hun"; + return sprintf('%02d:%02d.%02d', @_); } sub get_decode_args { @@ -48,10 +45,10 @@ sub get_decode_args { if (defined($next)) { if ($next->[2] == 0) { if ($next->[1] == 0) { - push(@$arg, '--until=' . tformat($next->[0] - 1, 59, 99)); + push(@$arg, '--until=' . tformat($next->[0] - 1, 59, 74)); } else { push(@$arg, '--until=' . tformat($next->[0], $next->[1] - 1, - 99)); + 74)); } } else { push(@$arg, '--until=' . tformat($next->[0], $next->[1], @@ -75,7 +72,8 @@ sub get_tags { my $date; my @titles; - open(TAGS, '-|', 'metaflac', '--export-vc-to=-', $fn); + open(TAGS, '-|', 'metaflac', '--export-vc-to=-', $fn) + or die("open(metaflac --export-vc-to=- $fn): $!"); while () { chomp; @@ -91,7 +89,7 @@ sub get_tags { push(@titles, $value); } } - close(TAGS) or die("close($fn): $!"); + close(TAGS) or die("close(metaflac --export-vc-to=- $fn): $?"); return ($artist, $album, $date, @titles); } @@ -105,15 +103,20 @@ sub flac2mp3 { my $track = shift; my $skip_arg = shift; my $until_arg = shift; + my $outfile; - my $outfile = sprintf("$artist ($album) \%02s $title.mp3", $track); + # 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 ('). + for ($fn, $title, $artist, $album, $date) { + s/'/'\\''/; + } + + $outfile = sprintf("$artist ($album) \%02s $title.mp3", $track); $outfile =~ s/\//_/g; - $outfile =~ s/:/_/g; - $outfile =~ s/'/_/g; - $outfile =~ s/"/_/g; - # XXX $until_arg ||= ''; + # XXX system("flac -cd $skip_arg $until_arg '$fn' | lame --preset standard --tt '$title' --ta '$artist' --tl '$album' --ty '$date' --tn $track - '$outfile'"); }