EXIF情報の取得
デジカメから取り込むときに日付のファイル名にしたいので、何かないかなと調べてみる。
4651 % gem query --remote --all --details --name-matches exif [pts/0] *** REMOTE GEMS *** exifr (0.10.9, 0.10.8, 0.10.7, 0.10.6, 0.10.5, 0.10.4, 0.10.3, 0.10.2, 0.10.1, 0.10, 0.9.6, 0.9.5.1, 0.9.5, 0.9.4, 0.9.3, 0.9.2, 0.9.1, 0.9) Author: R.W. van 't Veer Homepage: http://github.com/remvee/exifr/ EXIF Reader is a module to read EXIF from JPEG images. extexif (1.0.1, 1.0.0) Author: Rakuto Furutani Rubyforge: http://rubyforge.org/projects/extexif Homepage: by Rakuto Furutani an ruby-libexif extended to support GPS Exif data. mini_exiftool (1.0.1, 1.0.0, 0.7.0, 0.6.0, 0.5.1, 0.5.0, 0.4.1, 0.4.0, 0.3.1, 0.3.0, 0.2.0, 0.1.1, 0.1.0, 0.0.1) Author: Jan Friedrich Rubyforge: http://rubyforge.org/projects/miniexiftool Homepage: http://miniexiftool.rubyforge.org/ A library for nice OO access to the Exiftool command-line application written by Phil Harvey. multi_exiftool (0.0.1) Author: Jan Friedrich Rubyforge: http://rubyforge.org/projects/multiexiftool Homepage: http://multiexiftool.rubyforge.org
活動状況とかみて、今回は exifr を使ってみる。
% sudo gem install exifr [sudo] password for siz: Successfully installed exifr-0.10.9 1 gem installed Installing ri documentation for exifr-0.10.9... Installing RDoc documentation for exifr-0.10.9...
日付を取得するのは、date_time_original で良いのかなぁ?とりあえず、SDカードから、コピーするプログラムを作成。ディレクトリとか直に書いているけど。。。
#!/usr/bin/env ruby require 'rubygems' require 'exifr' INPUT_DIR="/media/card/DCIM/100KCA39" OUTPUT_DIR="/hu/vfat/_photo" unless File.directory?(OUTPUT_DIR) puts "no such directory: #{OUTPUT_DIR}" exit 1 end Dir.glob("#{INPUT_DIR}/*.{jpg,JPG}") do |input| time = EXIFR::JPEG.new(input).date_time_original dir = "#{OUTPUT_DIR}/#{time.year}" Dir.mkdir(dir) unless File.directory?(dir) output = "#{dir}/#{time.strftime("%Y%m%d_%H%M%S")}.jpg" if File.exist?(output) puts "File already exist: #{output}" else puts "#{input} -> #{output}" FileUtils.copy_file(input, output, true) unless File.exist?(output) end end