]> diplodocus.org Git - flac-archive/blobdiff - flac2mp3
Replace fa-flacd with fa-encode.
[flac-archive] / flac2mp3
index b7a5a213096ea07d901aeaf5bff0f4e5f4af0ebf..de2000f1b383fbaa28ba30c509cee72021d22ed7 100755 (executable)
--- a/flac2mp3
+++ b/flac2mp3
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python2
 
 """
 =head1 NAME
@@ -88,6 +88,27 @@ def flac2mp3(fn, title, artist, album_artist, album, discnum, date,
     verbose and tmp.append('--verbose')
     lame_options = ' '.join(tmp)
 
+    unquoted_fn = fn
+
+    # XXX all this quoting is an unholy mess and I can see bugs:
+    # Escaping quotes and then assembling a file name out of that?!
+    # Moved this part up 2018-11-03 and followed Microsoft file name rules.
+    outfile_album = album
+    if discnum != None:
+        outfile_album = '%s (disc %s)' % (album, discnum)
+    quoted_outfile = ('%s (%s) %02d %s.mp3' % (
+        artist, outfile_album, track, title)) \
+        .replace("'", '_') \
+        .replace('<', '_') \
+        .replace('>', '_') \
+        .replace(':', '_') \
+        .replace('"', '_') \
+        .replace('/', '_') \
+        .replace('\\', '_') \
+        .replace('|', '_') \
+        .replace('?', '_') \
+        .replace('*', '_')
+
     # Escape any single quotes ' so we can quote this.
     (fn, title, artist, album_artist,
      album, date) = [(x or '').replace("'", r"'\''")
@@ -97,14 +118,11 @@ def flac2mp3(fn, title, artist, album_artist, album, discnum, date,
     if album_artist:
         album_artist_options = "--tv 'TPE2=%s'" % album_artist
 
-    outfile_album = album
     discnum_options = ''
     if discnum != None:
-        outfile_album = '%s (disc %s)' % (album, discnum)
         discnum_options = "--tv 'TPOS=%d'" % int(discnum)
 
-    quoted_outfile = ('%s (%s) %02d %s.mp3' % (artist, outfile_album,
-                                               track, title)).replace('/', '_')
+    # XXX and I have no idea what this was...
     # HACK! :(
     if check_missing:
         return quoted_outfile.replace(r"'\''", "'")
@@ -112,7 +130,8 @@ def flac2mp3(fn, title, artist, album_artist, album, discnum, date,
     pic_options = ''
     (fd, picfn) = tempfile.mkstemp()
     os.close(fd)
-    p = Popen(['metaflac', '--export-picture-to', picfn, fn], stderr=PIPE)
+    p = Popen(['metaflac', '--export-picture-to', picfn, unquoted_fn],
+              stderr=PIPE)
     status = p.wait()
     stderr = ''.join(p.stderr)
     # Hacky check for flac with no album art
@@ -124,7 +143,6 @@ def flac2mp3(fn, title, artist, album_artist, album, discnum, date,
             sys.stderr.write('metaflac exited %d: %s\n' % (status, stderr))
             return
         pic_options = "--ti '%s'" % picfn
-        os.system('md5sum ' + picfn)
     try:
         # TODO: Look at TDOR, TDRL, TDRC for date.
         run_or_die(3, "flac %s -cd %s '%s' | lame --id3v2-only --id3v2-latin1 --pad-id3v2-size 0 %s --tt '%s' --ta '%s' --tl '%s' --ty '%s' --tn %d %s %s %s - '%s'"