BAR-NAVI APIを使って取得したデータをMongoDBに保存してみるコードサンプル
- mongo
- bson_ext
#coding:utf-8 | |
require "rubygems" | |
require "open-uri" | |
require "active_support/core_ext" | |
require "nokogiri" | |
require "yaml" | |
require "uri" | |
require "pp" | |
require "mongo" | |
require "bson" | |
DATABASE = "barnavi" | |
def value_plastic value | |
value.to_s.encode("UTF-8") unless value.nil? | |
end | |
def initialize_mongo | |
# create mongoDB | |
connection = Mongo::Connection.new | |
db = connection.db(DATABASE) | |
db.collection("bar") | |
end | |
def create_api | |
key = YAML::load(File.open("setting.yml"))["barnavi"]["apikey"] | |
pref = 22 #静岡 | |
pattern = 0 #住所 | |
url = "jacoyutorius.com" #呼び出し元サービスurl | |
return "http://webapi.suntory.co.jp/barnavi/v2/shops?key=#{key}&pref=#{pref}&url=#{url}&pattern=#{pattern}" | |
end | |
result = open(create_api) | |
mongo_coll = initialize_mongo | |
Hash.from_xml(result)["shops"]["shop"].each do |shop| | |
pp mongo_coll.insert({ | |
"access" => value_plastic(shop["access"]) , | |
"address" => value_plastic(shop["address"]), | |
"budget" => value_plastic(shop["budget"]), | |
"capacity" => shop["capacity"], | |
"close" => value_plastic(shop["close"]), | |
"name" => value_plastic(shop["name"]), | |
"name_kana" => value_plastic(shop["name_kana"]), | |
"open" => value_plastic(shop["open"]), | |
"private_room" => value_plastic(shop["private_room"]), | |
"type" => value_plastic(shop["type"]) | |
}) | |
end | |
BAR-NAVI APIを使って取得したデータをMongoDBに保存してみるコードサンプル
barnavi: | |
apikey: BARNAVI_API_KEY |