class AnimeRenamer::Renamer

Public Instance Methods

change_name(file, new_name) click to toggle source
# File lib/anime_renamer.rb, line 24
def change_name(file, new_name)
        ext = File.extname file
        File.rename(file, "#{new_name}#{ext}")
end
get_file_with_extension(dir, ext) click to toggle source
# File lib/anime_renamer.rb, line 19
def get_file_with_extension(dir, ext)

        Dir.glob(dir).select {|file| File.extname(file) == ext}
end
rename(original, name, digits = 2) click to toggle source
# File lib/anime_renamer.rb, line 29
def rename(original, name, digits = 2)
        ext = File.extname original
        basename = File.basename original, ext
        basename.gsub! /\[[^\]]*\]/, ""
        basename.gsub! /\([^)]*\)/, ""
        basename.strip!
        episode, _ = basename.match(/\A.*[^\.0-9]([0-9]{1,#{digits}})[^\.0-9].*\z/i)&.captures
        episode_end, _ = basename.match(/\A.*[^\.0-9]([0-9]{1,#{digits}})\z/i)&.captures
        point5, _ = basename.match(/\A.*[^0-9]([0-9]{1,#{digits}}\.5)[^0-9].*\z/i)&.captures
        point5_end, _ = basename.match(/\A.*[^0-9]([0-9]{1,#{digits}}\.5)\z/i)&.captures
        final_name = episode || episode_end || point5 || point5_end
        return p basename if (final_name).nil?
        p "#{name} Episode #{(final_name).to_s.rjust(digits, "0")}"
end
run(args) click to toggle source
# File lib/anime_renamer.rb, line 7
def run(args)
        name = args[0]
        ext = args[1] || ".mkv"
        dir = args[2] || "./**/*.*"
        digits = args[3] || 2
        get_file_with_extension(dir, ext).map {|x| [x, rename(x, name, digits)]}.each do |file|
                p file[0]
                p file[1]
                change_name file[0], file[1]
        end
end