Skip to content

Instantly share code, notes, and snippets.

@blovett
Forked from borzilleri/flac2mp3
Created November 13, 2011 02:38

Revisions

  1. @borzilleri borzilleri revised this gist Nov 12, 2011. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion flac2mp3
    Original file line number Diff line number Diff line change
    @@ -1,5 +1,5 @@
    #!/usr/bin/ruby
    # http://gist.github.com/gists/124242
    # https://gist.github.com/1361100

    ID3_TAGS = {
    "TITLE" => "tt",
  2. @borzilleri borzilleri revised this gist Nov 12, 2011. 1 changed file with 55 additions and 12 deletions.
    67 changes: 55 additions & 12 deletions flac2mp3
    Original file line number Diff line number Diff line change
    @@ -1,18 +1,61 @@
    #!/usr/bin/ruby
    # http://gist.github.com/gists/124242

    filename=ARGV[0]
    abort "Usage: flac2mp3 FLACFILE" if filename.nil?
    ID3_TAGS = {
    "TITLE" => "tt",
    "ARTIST" => "ta",
    "ALBUM" => "tl",
    "DATE" => "ty",
    "GENRE" => "tg",
    "TRACKNUMBER" => "tn",
    }
    CUSTOM_TAGS = {
    "COMPOSER" => "TCOM",
    "DISCNUMBER" => "TPOS",
    }

    `metaflac --export-tags-to=- "#{filename}"`.each_line do |s|
    v=s.strip.split '=', 2
    v[0].upcase!
    v[1].gsub! '"', '\"'
    eval %Q[#{v[0]}="#{v[1]}"];
    end
    #ARGV.each do|filename|
    Dir["*.flac"].each do |filename|
    abort "Usage: flac2mp3 FLACFILE" if filename.nil?

    tags = Hash.new
    custom = Hash.new
    trackTotal = 0
    discTotal = 0

    `metaflac --export-tags-to=- "#{filename}"`.each_line do |s|
    v=s.strip.split '=', 2
    v[0].upcase!
    v[1].gsub! '"', '\"'

    if ID3_TAGS.has_key?(v[0])
    tags[ID3_TAGS[v[0]]] = v[1]
    elsif CUSTOM_TAGS.has_key?(v[0])
    custom[CUSTOM_TAGS[v[0]]] = v[1]
    elsif "TRACKTOTAL" == v[0]
    trackTotal = v[1]
    elsif "DISCTOTAL"
    discTotal = v[1]
    end
    end

    args=%Q[--tt "#{TITLE}" --ta "#{ARTIST}" --tl "#{ALBUM}" --tn "#{TRACKNUMBER}" --tg "#{GENRE}"]
    basename=File.basename(filename, File.extname(filename))
    if tags.has_key?("tn") and 0 != trackTotal
    tags["tn"] += "/#{trackTotal}"
    end
    if custom.has_key?("TPOS") and 0 != discTotal
    custom["TPOS"] += "/#{discTotal}"
    end

    puts "Encoding #{basename}.mp3"
    exec %Q[flac -sdc "#{filename}" | lame --alt-preset standard #{args} - "#{basename}.mp3"]
    id3args = ""
    tags.each do |arg,val|
    id3args += %Q[ --#{arg} "#{val}"]
    end
    custom.each do |id,val|
    id3args += %Q[ --tv "#{id}=#{val}"]
    end

    basename=File.basename(filename, File.extname(filename))
    puts "Encoding #{basename}.mp3"
    cmd = %Q[flac -sdc "#{filename}" | lame -V0 #{id3args} - "#{basename}.mp3"]
    system cmd
    end
  3. @mxcl mxcl revised this gist Jul 4, 2009. 1 changed file with 4 additions and 4 deletions.
    8 changes: 4 additions & 4 deletions flac2mp3
    Original file line number Diff line number Diff line change
    @@ -5,10 +5,10 @@ filename=ARGV[0]
    abort "Usage: flac2mp3 FLACFILE" if filename.nil?

    `metaflac --export-tags-to=- "#{filename}"`.each_line do |s|
    s.strip!
    s.gsub! '"', '\"'
    s.sub! '=', '="'
    eval s+'"'
    v=s.strip.split '=', 2
    v[0].upcase!
    v[1].gsub! '"', '\"'
    eval %Q[#{v[0]}="#{v[1]}"];
    end

    args=%Q[--tt "#{TITLE}" --ta "#{ARTIST}" --tl "#{ALBUM}" --tn "#{TRACKNUMBER}" --tg "#{GENRE}"]
  4. @mxcl mxcl revised this gist Jun 5, 2009. 1 changed file with 2 additions and 1 deletion.
    3 changes: 2 additions & 1 deletion flac2mp3
    Original file line number Diff line number Diff line change
    @@ -14,4 +14,5 @@ end
    args=%Q[--tt "#{TITLE}" --ta "#{ARTIST}" --tl "#{ALBUM}" --tn "#{TRACKNUMBER}" --tg "#{GENRE}"]
    basename=File.basename(filename, File.extname(filename))

    exec %Q[flac -sdc "#{filename}" | lame --alt-preset standard #{args} --disptime - "#{basename}.mp3"]
    puts "Encoding #{basename}.mp3"
    exec %Q[flac -sdc "#{filename}" | lame --alt-preset standard #{args} - "#{basename}.mp3"]
  5. @mxcl mxcl revised this gist Jun 5, 2009. 1 changed file with 3 additions and 3 deletions.
    6 changes: 3 additions & 3 deletions flac2mp3
    Original file line number Diff line number Diff line change
    @@ -1,14 +1,14 @@
    #!/usr/bin/ruby
    # Author: Max Howell http://www.methylblue.com
    # http://gist.github.com/gists/124242

    filename=ARGV[0]
    abort "Usage: flac2mp3 FLACFILE" if filename.nil?

    `metaflac --export-tags-to=- "#{filename}"`.each_line do |s|
    s.strip!
    s.gsub! '"', '\"'
    s.sub! '=', '="'
    s.sub! "\n", "\"\n"
    eval s
    eval s+'"'
    end

    args=%Q[--tt "#{TITLE}" --ta "#{ARTIST}" --tl "#{ALBUM}" --tn "#{TRACKNUMBER}" --tg "#{GENRE}"]
  6. @mxcl mxcl created this gist Jun 5, 2009.
    17 changes: 17 additions & 0 deletions flac2mp3
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,17 @@
    #!/usr/bin/ruby
    # Author: Max Howell http://www.methylblue.com

    filename=ARGV[0]
    abort "Usage: flac2mp3 FLACFILE" if filename.nil?

    `metaflac --export-tags-to=- "#{filename}"`.each_line do |s|
    s.gsub! '"', '\"'
    s.sub! '=', '="'
    s.sub! "\n", "\"\n"
    eval s
    end

    args=%Q[--tt "#{TITLE}" --ta "#{ARTIST}" --tl "#{ALBUM}" --tn "#{TRACKNUMBER}" --tg "#{GENRE}"]
    basename=File.basename(filename, File.extname(filename))

    exec %Q[flac -sdc "#{filename}" | lame --alt-preset standard #{args} --disptime - "#{basename}.mp3"]