]> diplodocus.org Git - flac-archive/blobdiff - flac2mp3
split out some shared code and tidy 0-prefixing on DISCNUMBER
[flac-archive] / flac2mp3
index e4eaa22..de2000f 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