rubyでamazonから書籍検索



ISBNではなくて、作者やタイトルから書籍を得るときのサンプルコードも書いておく。



よくわからんのは、req.search( is, rg , 3) と書くと、1から3ページ目まで送ってくること。

2〜5ページ目だけよこせというような使い方ができない。なんでじゃ。使いにくい仕様だ。



サンプルコード


require 'amazon/aws'
require 'amazon/aws/search'

# is = Amazon::AWS::ItemSearch.new( 'Books', { 'Title' => '死して咲く花' } ) # タイトルで探す
is = Amazon::AWS::ItemSearch.new( 'Books', { 'Author' => '神林長平' } ) # 作者で探す
# is = Amazon::AWS::ItemSearch.new( 'Books', { 'Author' => '神林' , 'Title' => '死して咲く花' } ) # 複数の条件
rg = Amazon::AWS::ResponseGroup.new( 'Large' )

# page = req.search( is, rg , :ALL_PAGES) # 全件数取得。多いと時間がかかる。
page = req.search( is, rg ) # 件数が多い場合は、ページに分けて取得

# puts '===================page Analysis (ItemSearch)'
# puts page.inspect
puts '===================ItemSearch response'
# puts page

print "発見数 " , page.item_search_response.items.total_results,"\n","\n"
puts

page.item_search_response.items.item.each { |i|
print " title = ",i.item_attributes.title,"\n"
print " publisher = ",i.item_attributes.publisher ,"\n"
print " author= ",i.item_attributes.author,"\n"
puts
}

print "Page数 " , page.item_search_response.items.total_pages,"\n"
total_page = page.item_search_response.items.total_pages.to_i
if total_page > 1 then
# 次ページ以降を読み込み
page = req.search( is, rg , total_page) # 1〜指定ページまで読み込み
page.each { |p|
print ">>>>>> \n"
p.item_search_response.items.item.each { |i|
print " title = ",i.item_attributes.title,"\n"
print " publisher = ",i.item_attributes.publisher ,"\n"
print " author= ",i.item_attributes.author,"\n"
puts
}
print "<<<<< \n"
}
end