#!/usr/bin/env ruby require 'taglib' require 'fileutils' if ARGV.empty? puts "ERROR: no argument given..." puts "usage: tag-tracks TARGET_DIR" return 69 end target_dir = ARGV.first Dir.chdir("#{target_dir}") puts "Tagging Tracks in #{Dir.pwd} ..." mp3_files = Dir.glob("*").sort_by { |x| File.basename(x).downcase } track_num = 1 mp3_files.each do |song| song_name = File.basename(song, File.extname(song)) TagLib::MPEG::File.open(song) do |file| tag = file.id3v2_tag tag.track = track_num tag.title = "#{song_name}" file.save track_num += 1 end end puts "Done!"