Skip to content

Instantly share code, notes, and snippets.

@duncanbeevers
Created February 19, 2013 18:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save duncanbeevers/4988666 to your computer and use it in GitHub Desktop.
Save duncanbeevers/4988666 to your computer and use it in GitHub Desktop.
Convert .flac files to VBR mp3
#!/Users/duncanbeevers/.rvm/rubies/ruby-1.9.3-p0/bin/ruby
filenames = ARGV
abort "Usage: flac2mp3 FLACFILE, ( FLACFILE, ... )" if filenames.length < 1
require 'open3'
FIELD_NAMES = %w(TITLE ARTIST ALBUM TRACKNUMBER GENRE)
FIELDS = FIELD_NAMES.map { |f| "(?:#{Regexp.quote(f)})" }.join("|")
MATCHER = /^(#{FIELDS})=([^\n]+)\n$/
filenames.each do |filename|
basename=File.basename(filename, File.extname(filename))
metadata = {}
Open3.popen3("metaflac", "--export-tags-to=-", filename) do |_, stdout, _|
stdout.each_line do |s|
match = MATCHER.match(s)
if match
metadata[match[1].upcase] ||= match[2].gsub('"', '\"')
end
end
end
puts "Encoding #{basename}.mp3"
flac = [ "flac", "-sdc", filename ]
lame = [ "lame", "--silent",
"--alt-preset", "standard",
"--tt", metadata["TITLE"] || "",
"--ta", metadata["ARTIST"] || "",
"--tl", metadata["ALBUM"] || "",
"--tn", metadata["TRACKNUMBER"] || "",
"--tg", metadata["GENRE"] || "",
"-", "#{basename}.mp3"
]
Open3.pipeline flac, lame
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment