画像整理プログラム(1)

エロ画像掲示板をバルクで落とすようにしたら、1日に3000枚以上落ちて来た。ポチポチながめながら処理するのも、忙しい時には馬鹿らしいし(嫌じゃないがモチベーション低い)、重複画像を何度も見るのも嫌(しかもキモい画像が多い)なので、画像のデータベースを作って、重複しているものをまず削除するスクリプトを作った。

こんなことに手間かけるのもしょうがないんで、適当に作ったもの。稚拙な部分はつっこまないように。

原理は、画像のMD5とサイズのデータベースを作り、その中にあるものは重複として削除、ないものはデータベースに追加。

#! /usr/bin/ruby
require 'digest/md5'
DB="/home/ogochan/jpeg/OTONA/md5"
db = Hash.new
begin
  dbf = File.open(DB,"r")
  if  dbf
    dbf.each_line { | line |
      l = line.chop
      db[l] = l
    }
    dbf.close
  end
rescue Errno::ENOENT
  ;
end
dbf = File.open(DB,"a+")
Dir.glob("*.jpg") { |file|
  begin
    f = File.read(file)
    match = sprintf("%s:%08d",Digest::MD5.hexdigest(f),f.length)
    if  db[match] == match
      printf("duplicate [%s]\n",file)
      File.delete(file)
    else
      db[match] = match
      dbf.printf("%s\n",match)
    end
  rescue Errno::ENOENT
    printf("no entity %s\n",file)
    File.delete(file)
  end
}
dbf.close