]> diplodocus.org Git - flac-archive/commitdiff
Attempt to match Microsoft file name rules.
authorEric Gillespie <epg@pretzelnet.org>
Sun, 4 Nov 2018 02:39:30 +0000 (19:39 -0700)
committerEric Gillespie <epg@pretzelnet.org>
Sun, 4 Nov 2018 02:39:30 +0000 (19:39 -0700)
flac2mp3

index b2fc719..de2000f 100755 (executable)
--- a/flac2mp3
+++ b/flac2mp3
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python2
 
 """
 =head1 NAME
 
 """
 =head1 NAME
@@ -90,6 +90,25 @@ def flac2mp3(fn, title, artist, album_artist, album, discnum, date,
 
     unquoted_fn = fn
 
 
     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"'\''")
     # Escape any single quotes ' so we can quote this.
     (fn, title, artist, album_artist,
      album, date) = [(x or '').replace("'", r"'\''")
@@ -99,14 +118,11 @@ def flac2mp3(fn, title, artist, album_artist, album, discnum, date,
     if album_artist:
         album_artist_options = "--tv 'TPE2=%s'" % album_artist
 
     if album_artist:
         album_artist_options = "--tv 'TPE2=%s'" % album_artist
 
-    outfile_album = album
     discnum_options = ''
     if discnum != None:
     discnum_options = ''
     if discnum != None:
-        outfile_album = '%s (disc %s)' % (album, discnum)
         discnum_options = "--tv 'TPOS=%d'" % int(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"'\''", "'")
     # HACK! :(
     if check_missing:
         return quoted_outfile.replace(r"'\''", "'")