All pastes #839896 Raw Edit

Anonymous

public python v1 · immutable
#839896 ·published 2007-12-31 09:19 UTC
rendered paste body
#!/usr/bin/python# Convert ALAC files to FLAC# --rlg 12/30/07import sys, osfrom mutagen.flac import FLACfrom mutagen.mp4 import MP4debug = 0## Comment TBDdef setFlacTag( flacTagName, mp4TagName, subs=(0,) ):	# if MP4 tag does not exist, then do nothing	if not mp4TagName in mp4Tags:		return None		if len(subs) == 0:		flacTags[flacTagName] = str(mp4Tags[mp4TagName])	elif len(subs) == 1:		flacTags[flacTagName] = str(mp4Tags[mp4TagName][subs[0]])	elif len(subs) ==2:		flacTags[flacTagName] = str(mp4Tags[mp4TagName][subs[0]][subs[1]])	else:		print "should trap this error"		sys.exit(9)		## main#for alacFile in sys.argv[1:]:	print "==", alacFile		# Test for ALAC	## Should perhaps check for .m4a extension	cmd = "alac-decoder -t \"" + alacFile+"\""	# ^^ what is returned for lossy m4a?	### Need to make sure this is really LOSSLESS ALAC	if debug: print "CMD:", cmd	rc = os.system(cmd)	if debug: print "RC=", rc	if rc:		print "Not a valid ALAC file. Skipping."		continue	# foo/bar.m4a -> foo/bar.flac	base = os.path.splitext(alacFile)[0]	flacFile = base+".flac"		# If flacFile exists, skip.  Should ask user.  btw, Flac will bitch about it	if os.path.isfile(flacFile):		print "Output file [%s] already exists.  Skipping" % flacFile		continue			print "Encoding to:", flacFile	## to do Flac:  add replay-gain	cmd = "alac-decoder \"" + alacFile + "\" | flac - --best -V -o \"" + flacFile + "\""	if debug: print "CMD:", cmd	rc = os.system(cmd)	if debug: print "RC=", rc		mp4Tags = MP4(alacFile)	flacTags = FLAC(flacFile)			# Assume single-valued tags, i.e. use the first value in the list	# Following Easytag usage for FLAC tags		setFlacTag( 'ALBUM',		'\xa9alb' )	setFlacTag( 'TITLE',		'\xa9nam' )	setFlacTag( 'ARTIST',	'\xa9ART' )	setFlacTag( 'GENRE',		'\xa9gen', () ) # mutagen returns single-valued genre.  bug??	setFlacTag( 'DATE',		'\xa9day' )	setFlacTag( 'COMMENT' ,	'\xa9cmt' )	setFlacTag( 'ENCODED-BY',	'\xa9too' )	setFlacTag( 'COPYRIGHT',	'cprt' )	setFlacTag( 'TRACKNUMBER',	'trkn', (0,0) )	setFlacTag( 'TRACKTOTAL',	'trkn', (0,1) )	setFlacTag( 'DISCNUMBER',	'disk', (0,0) )	setFlacTag( 'COMPOSER',		'\xa9wrt' )	setFlacTag( 'PERFORMER',	'aART' ) # Easytag Orig. Artis. Is there a better match?	setFlacTag( 'LICENSE',	'purl' ) # Easytag URL		print flacTags.pprint()	flacTags.save()