yahoo-count (2)
ちゃんとオプションも google-count に合わせたよ。あんまり創意工夫はないよ。
#!/usr/bin/ruby -Ke Y_URL = 'http://api.search.yahoo.co.jp/WebSearchService/V1/webSearch' Y_ID = 'YahooDemo' # use your own ID require 'open-uri' require 'rexml/document' require 'nkf' require 'uri' require 'optparse' require 'cgi' $opt_words = nil $opt_quote = nil def quote str '"' + str + '"' end def query(*words) q = words.map { |word| (/ / =~ word || $opt_quote) ? quote(word) : word }.join(' ') url = URI.parse Y_URL url.query = { :appid => Y_ID, :results => 1, :query => URI.encode(NKF.nkf("-Ew -m0", q)), }.map{|kv| kv.join("=")}.join("&") doc = REXML::Document.new(url.read) puts [doc.root.attributes['totalResultsAvailable'], words.join(" ")].join("\t") end if __FILE__ == $0 STDOUT.sync = true ARGV.options { |q| q.def_option('--help', 'print this message') { puts q; exit 0 } q.def_option('--words', 'single query with multiple words') { $opt_words = true } q.def_option('--quote', 'quote each query') { $opt_quote = true } q.parse! } if $opt_words query(*ARGV) else ARGV.each do |word| query(word) end end end
わざわざ言う必要はないかなと思いつつも一応。ご自分の環境に合わせてエンコーディング周りは変えてくださいね。
#!/usr/bin/ruby -Ke
NKF.nkf("-Ew -m0", q)
追記:
- open.read はいかがなものかということで、URI#read に修正。
- google-count の URL 見つけたので張っとく。