require 'date'

unless ARGV.size == 1
  puts "Usage: parse.rb date\n\nExample: parse.rb 2011-10-20"
  exit
end

date = Date.parse(ARGV[0]).strftime("%d/%b/%Y")

puts "Looking for hits on #{date}..."

log = `grep #{date} access.log | grep GET | awk '{ print $7, $1, $4 }' | sort`

stats = {}
visits = {}

for line in log
  file = line.split[0].to_sym
  ip   = line.split[1]

  next if visits[file] && visits[file].include?(ip)

  visits[file] = visits[file] ? visits[file] << ip : visits[file] = [ip]
  stats[file] = stats[file] ? stats[file] + 1 : 1
end

for url, hits in stats.sort_by { |url,hits| hits }
  puts "#{hits} hits on #{url}"
end

