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を管理しないとめんどくさいですね。管理するなら後は回しっぱなしで。