X-Git-Url: https://diplodocus.org/git/flac-archive/blobdiff_plain/bd4b0cf0cecfd135c579924b155a021c6be99d5c..6c58deb659519e8e298a4e65e340a50ba37d6175:/flac2mp3 diff --git a/flac2mp3 b/flac2mp3 index 20ab476..999fd66 100755 --- a/flac2mp3 +++ b/flac2mp3 @@ -61,9 +61,12 @@ from org.diplodocus.util import run_or_die ################################################################################ # The child processes -def flac2mp3(fn, title, artist, album, date, track, skip_until, pic=None): - (title, artist, album, date) = [(x == None and 'unknown') or x - for x in (title, artist, album, date)] +def flac2mp3(fn, title, artist, album, date, track, skip_until, pics=None): + (title, artist, album) = [(x == None and 'unknown') or x + for x in (title, artist, album)] + if date == None: + date = '' + try: (skip_arg, until_arg) = skip_until except ValueError: @@ -84,20 +87,24 @@ def flac2mp3(fn, title, artist, album, date, track, skip_until, pic=None): verbose and tmp.append('--verbose') lame_options = ' '.join(tmp) + outfile = ('%s (%s) %02d %s.mp3' % (artist, album, + track, title)).replace('/', '_') + # Escape any single quotes ' so we can quote this. (fn, title, artist, album, date) = [x.replace("'", r"'\''") for x in (fn, title, artist, album, date)] - outfile = ('%s (%s) %02d %s.mp3' % (artist, album, - track, title)).replace('/', '_') + quoted_outfile = ('%s (%s) %02d %s.mp3' % (artist, album, + track, title)).replace('/', '_') run_or_die(3, "flac %s -cd %s %s '%s' | lame --add-id3v2 %s --tt '%s' --ta '%s' --tl '%s' --ty '%s' --tn %d - '%s'" % (flac_options, skip_arg or '', until_arg or '', fn, - lame_options, title, artist, album, date, track, outfile)) + lame_options, title, artist, album, date, track, + quoted_outfile)) - if pic != None: - taglib.add_apic_frame_to_mp3(outfile, pic[0], pic[1], pic[2]) + if pics != None: + taglib.add_apic_frame_to_mp3(outfile, pics) return 0 @@ -168,6 +175,7 @@ class Tags(object): return None return '\n'.join(value) def set(self, key, value, track=None): + key = key.upper() if track not in self._tags: self._tags[track] = {} if key not in self._tags[track]: @@ -197,17 +205,14 @@ def get_tags(fn): return tags -def find_pic(fn, tags): - pic = tags.get('__flac2mp3_PICTURE') +def find_pics(fn, tags): + pics = tags.get('__flac2mp3_PICTURE') - if not isinstance(pic, tuple): - for i in flac.get_pictures(fn): - if i[1] == flac.PICTURE_TYPE_FRONT_COVER: - pic = i[:3] - break - tags.set('__flac2mp3_PICTURE', pic) + if not isinstance(pics, list): + pics = flac.get_pictures(fn) + tags.set('__flac2mp3_PICTURE', pics) - return pic + return pics def main(argv): # Control the exit code for any uncaught exceptions. @@ -271,7 +276,7 @@ def main(argv): tags.gets('ARTIST', track), album, tags.gets('DATE', track), - track, args[i], find_pic(fn, tags)]) + track, args[i], find_pics(fn, tags)]) track = i + 2 except Exception, error: sys.stderr.write(getattr(error, 'msg', ''))