Google Suggest APIで電卓もどき
Google電卓ってありますよね。例えば「1+1」でググったら「2」と出たり。あれってGoogle Suggest APIからでも多少使えるみたい。なのでちょっと前にRubyとかの入門がてらにGoogle Suggest APIを使った電卓のようなものを書いたので晒してみようと思う。あらかじめ言い訳しておきますが私はプログラミングはほとんどやったことありませんので用語の使い方が変だったりソースコードが変だったりするかもしれません。それは仕様です。
require 'net/http' require 'cgi' require 'rexml/document' if ARGV[0] != nil then word = ARGV[0] else print ">" word = gets.chop end # --APIを利用して計算結果を求める-- res_xml = nil Net::HTTP.version_1_2 #おまじない Net::HTTP.start("www.google.co.jp", 80){ |http| res_xml = http.get("/complete/search?output=toolbar&q=#{CGI::escape(word)}").body #puts res_xml #デバグ用 } # --REXMLをつかって計算結果を表示する-- doc = REXML::Document.new res_xml hash = Hash.new doc.elements.each('toplevel/calculator_suggestion'){ |element| puts element.attributes["data"] #結果の表示 }
Google Suggest APIは
http://google.com/complete/search?output=toolbar&q="調べたい語句"
でサジェストの結果とかをXMLで返してくれるみたい。その中のcalculator_suggestionのdataの値というのが電卓の結果の様だ。たとえば"1km in m"でAPIを突っついてみた場合こんなのが返ってくる。
<?xml version="1.0"?><toplevel><calculator_suggestion data="1000 meters"/></toplevel>
このスクリプトの注意点としては
1.動かすにはREXMLが必要。
REXML - Home
2.Google Suggest APIの仕様か何かだと思うけど日本語で、例えば"1kmをmで"とかは無理っぽい。ギリシャ文字も無理っぽい。計算結果のcalculator_suggestionは返してくれないっぽい。
参考にしたページ
Net::HTTPのところ
Ruby Reference Manual
Google Suggest APIのところ
Google Suggest APIを使う: Kwappa開発室
REXMLのところ
XML処理 REXMLの使い方 - プログラムメモ