Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

dtodor

macrumors member
Original poster
Nov 10, 2009
52
0
Enjoy!

Code:
require 'rubygems'
require 'open-uri'
require 'nokogiri'
require 'cgi'

def fetch_availability(country)
  doc = Nokogiri::HTML(open("http://store.apple.com/#{country}/browse/home/shop_mac/family/macbook_pro?mco=MTM3NjU5MzU"))
  result = {}
  i = 0
  doc.css('table.product-table tr.product-model h3').each do |model|
    result[i] = model.text
    i += 1
  end
  i = 0
  doc.css('span.customer_commit_display').each do |availability|
    result[i] = [result[i], availability.text]
    i += 1
  end
  result
end

countries = {"au" => "Australia", "be-nl" => "Belgium", "br" => "Brazil", "ca" => "Canada", "cn" => "China", "dk" => "Denmark", 
             "de" => "Germany", "es" => "Spain", "fr" => "France", "hk" => "Hong Kong", "id" => "Indonesia", "ie" => "Ireland", 
             "it" => "Italy", "jp" => "Japan", "lu" => "Luxembourg", "my" => "Malaysia", "mx" => "Mexico", "nl" => "Netherlands", 
             "nz" => "New Zealand", "no" => "Norway", "ph" => "Philippines", "pt" => "Portugal", "at" => "Austria", "ch-de" => "Switzerland", 
             "sg" => "Singapore", "kr" => "South Korea", "fi" => "Finland", "se" => "Sweden", "tw" => "Taiwan", "th" => "Thailand", 
             "us" => "United States of America", "uk" => "United Kingdom", "vn" => "Vietnam"}

countries.each do |code,country|
  result = fetch_availability(code)
  result.each do |key,value|
    unless value[1].include? "24" or value[1].include? "Today"
      puts "#{country} - '#{value[0]}': '#{value[1]}'"
    end
  end
end

Output:


Norway - '13": 2.66GHz': '3-5 abeidsdager'
Taiwan - '17-inch: 2.53GHz': '7 business days'
Taiwan - '13-inch: 2.66GHz': '7 business days'
Taiwan - '15-inch: 2.53GHz': '7 business days'
Taiwan - '15-inch: 2.66GHz': '7 business days'
Finland - '13-inch: 2.66GHz': '3-5 business days'
Hong Kong - '15-inch: 2.53GHz': '2-4 business days'
Portugal - '17 pol.: 2.53GHz': '1 dia útil'
Portugal - '13 pol.: 2.4GHz': '1 dia útil'
Portugal - '13 pol.: 2.66GHz': '1 dia útil'
Portugal - '15 pol.: 2.4GHz': '1 dia útil'
Portugal - '15 pol.: 2.53GHz': '1 dia útil'
Portugal - '15 pol.: 2.66GHz': '1 dia útil'
Indonesia - '17-inch: 2.53GHz': 'Currently Unavailable'
Indonesia - '13-inch: 2.4GHz': 'Currently Unavailable'
Indonesia - '13-inch: 2.66GHz': 'Currently Unavailable'
Indonesia - '15-inch: 2.4GHz': 'Currently Unavailable'
Indonesia - '15-inch: 2.53GHz': 'Currently Unavailable'
Indonesia - '15-inch: 2.66GHz': 'Currently Unavailable'
Denmark - '13-inch: 2.66GHz': '3-5 business days'
Thailand - '15-inch: 2.4GHz': '1-2 business days'
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.