コードレビューした。
rubyでgoogle Custom Search API入門。複数キーワードのマッチング。 - メモりメモる
友人がコード書いてたので勝手にレビューした。
require "net/http" require "uri" require "json" require "pp" require "yaml" require "cgi" GOOGLE_KEY = "" composer_list = YAML.load_file("composers.yml") music_list = YAML.load_file("musics.yml") api_path = "http://ajax.googleapis.com/ajax/services/search/web" api = URI.parse(api_path) headers = { :Referer => "http://hatone.info/" } composer_list.each do |composer| max_count = 0 category = "" music_list.each do |music| query = CGI.escape("#{composer} is similar to #{music}") data = "?v=1.0&key=#{GOOGLE_KEY}&q=#{query}" apicall = Net::HTTP.new(api.host) response = apicall.get2(api.path + data, headers) data = JSON.parse(response.body) return exit if data['responseStatus'] == 403 # ここには既に数字入っているのでは? by asonas count = data['responseData']['cursor']['estimatedResultCount'] count = count.to_i # result_count = data['responseData']['cursor']['estimatedResultCount'] # if max_count < result_count if max_count < count max_count = count category = music end end pp composer + " is " + category end
詳しい修正内容は上のforkしたgistのコメントに書いてます。
インデントが3スペースだったのを2スペースにしたり、変数名をわかりやすくしたりなどなど。おもにコードの整形。
403が出た時には適当にリトライをかけるようにすればいいと思ったりしている。100req/dayとのことなのでjavan/whenever · GitHubなどを使って、APIが死ぬまでループさせるのではなく、定期的に一度だけリクエストを投げるようにすれば人間様が苦労しなくていいので幸せに向かってダッシュできる。