ayumu_aoの日記

SIerから事業会社に転職したエンジニアが技術についてや組織論、本の話、今までの体験談などなどを個人的に垂れ流しています。

AmazonAPIでランキングを取得してみる

AmazonAPIでランキングを取得してみる

簡単に試すためにwheneverを利用してBatchを作って実験してみました〜

APIを使うためにはアソシエイトの登録が必要です。

Amazonアソシエイトの登録を行ない、アクセスキー、シークレットキーの取得を行なっていることを前提に記載しています。

Gemfile

下記を追記

gem 'amazon-ecs'

# 定時実行
gem 'whenever', require: false

config/environment.rb

ファイル末端に追記

Amazon::Ecs.debug = true
Amazon::Ecs.options = {
  :AWS_access_key_id => "xxxxxxxxxxxxx",
  :AWS_secret_key => "xxxxxxxxxxxxxxxxx",
  :associate_tag => "xxxxxxxxxxx-22",
  :country => :jp
}

タスクファイル作成

下記コマンドを実行(今回はitem_rankingという名前で作成)

rails g task item_ranking

Batch実装

lib/task/item_ranking.rake

に実装

namespace :item_ranking do
  desc "call to amazon api for Ranking"
  task :item_ranking => :environment do |variable|
      # デバックログ出力するために記述
      Amazon::Ecs.debug = true
      res = Amazon::Ecs.item_search(
        "hogehoge", # キーワードを入力
        search_index: '',  # 抜きたいジャンルを指定
        country: 'jp',
        sort: 'salesrank' # ソート順を売上順に指定することでランキングとする
        )
      i = 0 
      res.items.each do |item|
        i = i + 1
        p "第#{i}位"
        p item.get('ItemAttributes/Title')
      end
  end
end

APIリファレンス

Product Advertising API

補足:

APIリファレンスの「 国ごとの ItemSearch の並べ替え値 » JP サイトの並べ替え値」と選んでいくとジャンル毎に使えるソート順パラメータの一覧が出てくる