X-Git-Url: https://diplodocus.org/git/flac-archive/blobdiff_plain/050e4e9a8ad2e021c40ee33a0af475a614672482..cfd5982bbc4e0321c4bf6e13ac54337f38372066:/flac2mp3 diff --git a/flac2mp3 b/flac2mp3 index b7a5a21..de2000f 100755 --- 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'"