]> diplodocus.org Git - flac-archive/blobdiff - flac2mp3
Use mkcue to make cue sheets, instead of cdrdao.
[flac-archive] / flac2mp3
index 2231b1f8d23a58b98267e963a6c6647ba3b6824e..73df9b66ca102c47b5a3bf8dbeb772dfe06856f0 100755 (executable)
--- a/flac2mp3
+++ b/flac2mp3
@@ -75,7 +75,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 (<TAGS>) {
         chomp;
 
@@ -91,7 +92,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 +106,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'");
 }