Skip to content

Instantly share code, notes, and snippets.

@jacoyutorius
Last active August 29, 2015 13:57
Show Gist options
  • Save jacoyutorius/9804109 to your computer and use it in GitHub Desktop.
Save jacoyutorius/9804109 to your computer and use it in GitHub Desktop.
BAR-NAVI APIを使って取得したデータをMongoDBに保存してみるコードサンプル
#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

BarNaviAPI & MongoDB sample

BAR-NAVI APIを使って取得したデータをMongoDBに保存してみるコードサンプル

APIリファレンス

BAR-NAVI APIガイド

MongoDB

gem

  • mongo
  • bson_ext
barnavi:
apikey: BARNAVI_API_KEY
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment