Skip to content

Instantly share code, notes, and snippets.

@rtanglao
Created October 12, 2010 17:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rtanglao/622592 to your computer and use it in GitHub Desktop.
Save rtanglao/622592 to your computer and use it in GitHub Desktop.
calculateAvgColourNumber.rb
#!/usr/bin/env ruby
require 'json'
require 'pp'
pages = 0
total = 0
perpage = 0
r, g, b = 0, 0, 0
total_photos = 0
ARGF.each_line do |line|
serializedJSON = line
flickr_data_page = JSON.parse(serializedJSON)
page = flickr_data_page["photos"]["page"].to_i
if page == 1
total = flickr_data_page["photos"]["total"].to_i
perpage = flickr_data_page["photos"]["perpage"].to_i
pages = flickr_data_page["photos"]["pages"].to_i
end
if page == pages
num_photos = total % perpage
else
num_photos = perpage
end
$stderr.printf "page:%d of:%d\n", page, pages
0.upto num_photos-1 do |photo_index|
if flickr_data_page["photos"]["photo"][photo_index].has_key?("avg_colour_m")
hex = flickr_data_page["photos"]["photo"][photo_index]["avg_colour_m"]["variable"][6]["statistic"][0]["hex"][0].to_i(16)
blue = hex % 256
green = (hex >> 8) % 256
red = (hex >> 16) % 256
$stderr.printf "r:%d g:%d b:%d\n",red,green,blue
r += red
g += green
b += blue
total_photos += 1
end
end
end
printf "avg r:%d g:%d b:%d hex:%x\n",r/total_photos, g/total_photos, b/total_photos, b/total_photos + g/total_photos * 256 + r/total_photos * 65536
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment