exifとる。

未だに携帯とか写真にgps情報埋め込んでる人居るのかな、という話題でした。
ちなみに私は埋めてます。

require 'hpricot'
require 'open-uri'

#ユーティリティ
def url2fullurl(src) 
		#urlを整形するためのなんかすご処理
		return src
end

DEBUG = false

#################################################
#収集対象読み込み/ローカルにlist.txtでもOK
list = [
	"http://f.hatena.ne.jp/twitter3/?model=iPhone"
]
open("./list.txt","r").each do |line|
	list << line.chomp!
end
list.uniq!

#################################################
#url収集
imglist = []
list.each do |ur|
	puts "fetching #{ur}.." if DEBUG	
	doc = Hpricot(open(ur).read )
	imgtags = (doc/"img")
	imgtags.each do |im|
		im = url2fullurl(im[:src])
		if /jpg$/ =~ im 
			if /^http/ =~ im
					imglist << im 
			end
		end
	end
end

#################################################
#exifを取得 注意:exifrを__END__でいじってます
require 'exifr'
rettags = []
imglist.each do |ii|
	begin
		tags = EXIFR::JPEG.new(ii).to_hash
		rettags <<  [ii,tags]
	rescue => ex
		p ex
	end		
end	

#################################################
#書き出し
File::open("kekka.html", "w") do |io|
	io.puts "<html><body>\n"
	rettags.each do |tag|
		io.puts "<h3>target:<a href='#{tag[0]}'>#{tag[0]}</a></h3>"
		io.puts "<img src='#{tag[0]}' /><br/>"
		io.puts "<pre>\n" 
		begin
			tag[1].each_pair do |k,v| 
				io.print k,"=>",v,"\n"; print k,"=>",v,"\n" ;	
			end
		rescue => ex
			p ex
		end	
		io.puts "</pre>\n" 
	end
	io.puts "</body></html>"
end

__END__
urlのimgを読み込むためにはopen-uriが必要っぽい
@/usr/local/lib/ruby/gems/1.9.1/gems/exifr-0.10.9/lib/jpeg.rb::inisializeを変更した。
	    def initialize(file)
      require 'open-uri'
      if file.kind_of? String
        open(file, 'rb') { |io| examine(io) } #File.open(file, 'rb') { |io| examine(io) }
      else
        examine(file.dup)
      end
    end

アメーバ芸能人ブログの[芸能人,url]とかのデータ構造を元に
クロールさせてDBに突っ込んでいくしくみとか面白いかもしれませんね。
収集済みimgのsrcを管理しないとめんどくさいですね。管理するなら後は回しっぱなしで。