Skip to content

Instantly share code, notes, and snippets.

@joker1007
Created December 30, 2012 21:22
Show Gist options
  • Save joker1007/4415304 to your computer and use it in GitHub Desktop.
Save joker1007/4415304 to your computer and use it in GitHub Desktop.
input_dir = ARGV[0]
Dir.chdir(input_dir)
mka_files = Dir.glob("*.mka")
mka_files.each do |filename|
basename = File.basename(filename, ".*")
unless File.exist?(basename)
Dir.mkdir(basename)
system("mkvextract", "tracks", filename, "--cuesheet", "1:#{basename}/#{basename}.flac")
system("mkvextract", "attachments", filename, "1:#{basename}/cover.jpg")
system("gsed", "-i", "-e", "s/FILE \"\"/FILE \"#{basename.force_encoding("UTF-8-MAC").encode("UTF-8").gsub(/&/, "\\\\&")}.flac\"/g", "#{basename}/#{basename}.cue")
cuesheet = File.open("#{basename}/#{basename}.cue")
genre = cuesheet.grep(/REM GENRE/).first
if genre
system("gsed", "-i", "-e", "/REM GENRE/d", "#{basename}/#{basename}.cue")
system("gsed", "-i", "-e", "2i #{genre.strip}", "#{basename}/#{basename}.cue")
end
cuesheet.rewind
date = cuesheet.grep(/REM DATE/).first
if date
system("gsed", "-i", "-e", "/REM DATE/d", "#{basename}/#{basename}.cue")
system("gsed", "-i", "-e", "2i #{date.strip}", "#{basename}/#{basename}.cue")
end
cuesheet.close
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment