module Fixname
encoding: utf-8
require "fixname/version"
Public Class Methods
check_filename(file)
click to toggle source
# File lib/fixname.rb, line 23 def check_filename file basename = File.basename(file) path = File.dirname(file) ext = basename.rpartition('.').last.downcase parts = basename.split(/-/).map!{|part|part.strip} parts[0] = parts.first.split(/&/).map! do |author| #wissel voor en achternaam bij , before, after = author.split(/,/).map!{|part|part.strip} author = "#{after} #{before}" end.join(" & ") result = parts.join(" - ") begin result.gsub!(/\[(.*?)\]/," ") #verwijder alles tussen rechte haken result.gsub!(/\(.*\)/i," ") #verwijder alles tussen haken result.gsub!(/_+/," ") #vervang _ door spatie result.gsub!(/\\\\/,"/") #nodig ? vervang \\ door / result.gsub!(/\.mobi|\.pdf|\.prc|\.doc/i,"") formats = "(mobi|lit|epub|azw|txt|rtf|lrf|html|htm|azw3)" pattern = /\.#{formats}/i result.gsub!(pattern,"") pattern = /\(#{formats}\)?/i result.gsub!(pattern,"") result.gsub!(/- *-/," - ") #verwijder opeenvolgende - eventueel gescheiden door spatie result.gsub!(/ +/," ") #vervang meerder spaties door één result.gsub!(/\(\)/,"") #vervang lege haakjes result.gsub!(/ *-*\./,".") #vervang spatie gevolgd door punt result.gsub!(/ *- *$/,"") #vervang streepje aan het einde result.strip! result = titleize(result) end result = path+'/'+result+"."+ext result.gsub('?',"'").gsub("./",'') end
fix(old_name)
click to toggle source
# File lib/fixname.rb, line 65 def fix old_name result = File.join(File.dirname(old_name), check_filename(File.basename(old_name))).gsub("/",'\\') if old_name != result old_name = old_name.gsub("/",'\\') # puts " #{old_name}" # puts "=>#{result}" end result rescue => e puts e puts e.backtrace end
fixname(*paths)
click to toggle source
# File lib/fixname.rb, line 78 def fixname *paths if paths paths = [paths].flatten elsif ARGV.length == 0 puts "No path given.." abort "No path given.." else paths = ARGV end paths.each do |old_name| if File.directory?(old_name) old_name = old_name.gsub(/\\/,'/') puts "#{old_name} is a folder\n" Dir.glob("#{old_name}/*.*").each do |old_name| begin rename old_name, fix(old_name) rescue => e puts e puts e.backtrace sleep 2 end end else rename old_name, fix(old_name) end end rescue => e puts e puts e.backtrace end
titleize(string)
click to toggle source
# File lib/fixname.rb, line 6 def titleize string string.split(/(\W)/).map(&:capitalize).join end
Public Instance Methods
normalise()
click to toggle source
# File lib/fixname.rb, line 10 def normalise # replace spoecial characters with normal ones begin self.tr( "#{}()'.,;_&0123456789ÀÁÂÃÄÅàáâãäåĀāĂ㥹ÇçĆćĈĉĊċČčÐðĎďĐđÈÉÊËèéêëĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħÌÍÎÏìíîïĨĩĪīĬĭĮįİıĴĵĶķĸĹĺĻļĽľĿŀŁłÑñŃńŅņŇňʼnŊŋÒÓÔÕÖØòóôõöøŌōŎŏŐőŔŕŖŗŘřŚśŜŝŞşŠšſŢţŤťŦŧÙÚÛÜùúûüŨũŪūŬŭŮůŰűŲųŴŵÝýÿŶŷŸŹźŻżŽž", " AAAAAAaaaaaaAaAaAaCcCcCcCcCcDdDdDdEEEEeeeeEeEeEeEeEeGgGgGgGgHhHhIIIIiiiiIiIiIiIiIiJjKkkLlLlLlLlLlNnNnNnNnnNnOOOOOOooooooOoOoOoRrRrRrSsSsSsSssTtTtTtUUUUuuuuUuUuUuUuUuUuWwYyyYyYZzZzZz" ).downcase.gsub(/ +/," ").split(" ").sort.join("_") rescue puts self puts $! end end
rename(old_name, new_name)
click to toggle source
# File lib/fixname.rb, line 56 def rename old_name, new_name # puts %Q{ren "#{old_name}" "#{new_name}"} puts new_name system(%Q{move /y "#{old_name}" "#{new_name}"}) rescue => e puts e puts e.backtrace end
Private Instance Methods
check_filename(file)
click to toggle source
# File lib/fixname.rb, line 23 def check_filename file basename = File.basename(file) path = File.dirname(file) ext = basename.rpartition('.').last.downcase parts = basename.split(/-/).map!{|part|part.strip} parts[0] = parts.first.split(/&/).map! do |author| #wissel voor en achternaam bij , before, after = author.split(/,/).map!{|part|part.strip} author = "#{after} #{before}" end.join(" & ") result = parts.join(" - ") begin result.gsub!(/\[(.*?)\]/," ") #verwijder alles tussen rechte haken result.gsub!(/\(.*\)/i," ") #verwijder alles tussen haken result.gsub!(/_+/," ") #vervang _ door spatie result.gsub!(/\\\\/,"/") #nodig ? vervang \\ door / result.gsub!(/\.mobi|\.pdf|\.prc|\.doc/i,"") formats = "(mobi|lit|epub|azw|txt|rtf|lrf|html|htm|azw3)" pattern = /\.#{formats}/i result.gsub!(pattern,"") pattern = /\(#{formats}\)?/i result.gsub!(pattern,"") result.gsub!(/- *-/," - ") #verwijder opeenvolgende - eventueel gescheiden door spatie result.gsub!(/ +/," ") #vervang meerder spaties door één result.gsub!(/\(\)/,"") #vervang lege haakjes result.gsub!(/ *-*\./,".") #vervang spatie gevolgd door punt result.gsub!(/ *- *$/,"") #vervang streepje aan het einde result.strip! result = titleize(result) end result = path+'/'+result+"."+ext result.gsub('?',"'").gsub("./",'') end
fix(old_name)
click to toggle source
# File lib/fixname.rb, line 65 def fix old_name result = File.join(File.dirname(old_name), check_filename(File.basename(old_name))).gsub("/",'\\') if old_name != result old_name = old_name.gsub("/",'\\') # puts " #{old_name}" # puts "=>#{result}" end result rescue => e puts e puts e.backtrace end
fixname(*paths)
click to toggle source
# File lib/fixname.rb, line 78 def fixname *paths if paths paths = [paths].flatten elsif ARGV.length == 0 puts "No path given.." abort "No path given.." else paths = ARGV end paths.each do |old_name| if File.directory?(old_name) old_name = old_name.gsub(/\\/,'/') puts "#{old_name} is a folder\n" Dir.glob("#{old_name}/*.*").each do |old_name| begin rename old_name, fix(old_name) rescue => e puts e puts e.backtrace sleep 2 end end else rename old_name, fix(old_name) end end rescue => e puts e puts e.backtrace end
titleize(string)
click to toggle source
# File lib/fixname.rb, line 6 def titleize string string.split(/(\W)/).map(&:capitalize).join end