読者です 読者をやめる 読者になる 読者になる

良いあそなすちゃん

良い方のあそなすちゃんです!

コードレビューした。

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


アレとコレが一致するか? — Gist

詳しい修正内容は上のforkしたgistのコメントに書いてます。
インデントが3スペースだったのを2スペースにしたり、変数名をわかりやすくしたりなどなど。おもにコードの整形。

403が出た時には適当にリトライをかけるようにすればいいと思ったりしている。100req/dayとのことなのでjavan/whenever · GitHubなどを使って、APIが死ぬまでループさせるのではなく、定期的に一度だけリクエストを投げるようにすれば人間様が苦労しなくていいので幸せに向かってダッシュできる。