Pastie now auto-senses if line-wrap is a bad or good idea. Feedback?
## mark a section (Learn more)
#!/bin/ruby require 'net/http' require 'rubygems' require 'active_support' url = URI.parse("http://www.facebook.com/ajax/social_graph/fetch.php") 5.times do |page| req = Net::HTTP::Post.new(url.path, { 'Content-Type' => 'application/x-www-form-urlencoded; charset=UTF-8', 'User-Agent' => 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_1; en-us) AppleWebKit/531.9 (KHTML, like Gecko) Version/4.0.3 Safari/531.9', 'Origin' => 'http://www.facebook.com', 'X-Svn-Rev' => '189912', 'Accept-Language' => 'en-us', 'Cookie' => 'lotsamagicstuff', }) req.body = "page=#{page}&edge_type=fan&limit=100&class=FanManager&node_id=47337974490&post_form_id=magic&fb_dtsg=magic&post_form_id_source=AsyncRequest&__a=1" response = Net::HTTP.start(url.host, url.port) do |http| http.request(req) end puts "Got Page #{page}" File.open("/tmp/fb_fanjack_page#{page}.js", 'w').write(response.body) end # this will be the header for the CSV file puts 'facebook_id,Name,City-state,facebook_pic_big' 5.times do |page| js = File.read("/tmp/fb_fanjack_page#{page}.js") js = js.gsub(/for \(;;\);/, '') data = ActiveSupport::JSON.decode(js) users = data["payload"]["user_info"] users.each do |user| puts '"' + [user[0], user[1]['title'], user[1]['subtitle'], user[1]['pic']].join('","') + '"' end end
This paste will be private.
From the Design Piracy series on my blog: