« iPhotoの弱点をRubyで補う[2] | トップページ | Inkscape 0.46 Released! »

2008/04/10

iPhotoの弱点をRubyで補う[3]

ちょっと間があいてしまいましたが、この記事の最終回です。
ruby-exif.rbと同じフォルダにchdate.rbというファイルを作って以下のコードを書きます。

***** chdate.rb *****
require 'parsedate'
require 'ruby-exif'
 
def apply_datetime(filename)
  
  exif = Exif.new(filename)
  
  tmp = exif.info["DateTime"].slice(/[0-9]+:[0-9]+:[0-9]+/).gsub(/:/,"-") +
    exif.info["DateTime"].slice(/ [0-9][0-9]:[0-9]+:[0-9]+/)
  
  ary = ParseDate::parsedate(tmp)
  t = Time::local(*ary[0..-3])
  File::utime(t, t, filename)
  
  puts "#{filename} : #{t.to_s}"
  
end
 
dir=ARGV.shift
p "start"
Dir::glob("#{dir}").each {|f|
  apply_datetime(f)
}
p "end"

ここでは、apply_datetimeプロシージャを定義して、これにファイル名を渡すと日付を変更する処理をさせます。

そして実行する際、引数に処理したいフォルダとファイルをワイルドカードを使って入力するとファイルの作成・更新日時が変更されます。

実行例は下記のコマンドとなります。

$ ruby chdate.rb ~/Pictures/*.JPG

変更されたファイルが画面に表示されて、"end"と出れば処理終了です。

以上、つたないプログラムではありますが、もし「こうすればもっと良いよ」とか「Ruby的にはこういう書き方になるよ」などご指摘等ありましたら、ぜひコメントお願いいたします。

|

« iPhotoの弱点をRubyで補う[2] | トップページ | Inkscape 0.46 Released! »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/79953/40849519

この記事へのトラックバック一覧です: iPhotoの弱点をRubyで補う[3]:

» ラーメン物語 [うまい!ラーメン屋情報]
全国のラーメン屋情報を掲載致してます。 是非、ご覧ください(・∀・) [続きを読む]

受信: 2008/04/26 15:39

« iPhotoの弱点をRubyで補う[2] | トップページ | Inkscape 0.46 Released! »