ようこそゲストさん

Super Neurotic Junction

2009/06/26(金) rubyでamazonから書籍検索

2009/06/26 16:44 研究課題snjx
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

名前:  非公開コメント   

E-Mail(任意/非公開):
URL(任意):
  • TB-URL  http://snjx.info/diary/snjx/035/tb/