MoveFromExif/movefromexif.rb

44 lines
1.1 KiB
Ruby

#!/usr/bin/env ruby
# == Summary
# Moves JPEG files from directory to another creating a year/month/day structure
#
# == Usage
# ./movefromexif.rb [source_folder] [destination_folder]
#
# == Version History
# v0.0.1 - 2011/02/10
#
# == Issues
# None known
require 'rubygems'
require 'mini_exiftool'
require 'fileutils'
class MoveFromExif
def self.sort(source, target)
MoveFromExif.get_images(source).each do |filename|
photo = MiniExiftool.new filename
time = photo.date_time_original
destination = File.join(target, time.year.to_s, "%02d" % time.month, "%02d" % time.day)
if File.dirname(filename) != destination
FileUtils.makedirs(destination) unless File.exists? destination
FileUtils.mv(filename, destination)
puts "Moved #{filename} to #{destination}"
end
end
end
private
def self.get_images(directory)
Dir.glob(File.join(directory,'**','*.jpg'), File::FNM_CASEFOLD)
end
end
if ARGV.size != 2
puts "Usage: movefromexif source_folder target_folder"
exit -1
else
MoveFromExif.sort(ARGV[0],ARGV[1])
end