Tambourine作業メモ

主にスキル習得のためにやった作業のメモ。他人には基本的に無用のものです。

ISBNから、Amazonへの画像付きリンクを作ってくれるスクリプト

ブログにAmazonへのアサマシを貼るときに使っているスクリプトtDiaryAmazonプラグインからパクっていじった。

#!/usr/bin/env ruby

require 'open-uri'
require 'timeout'
require 'rexml/document'
require 'getopts'

@amazon_access_key_id = ''
@amazon_require_version = '2007-01-15'
@amazon_ecs_url = 'http://webservices.amazon.co.jp/onca/xml'
@amazon_aid = 'xxxxxxxxxxxxxx' #適当に変えること

getopts("ml")

@img_size = $OPT_l ? "Large" : "Medium"
@img_style = 'margin:5px;float:left;'

def amazon_call_ecs(asin)
  
  url =  @amazon_ecs_url.dup
  url << "?Service=AWSECommerceService"
  url << "&AWSAccessKeyId=#{@amazon_access_key_id}"
  url << "&AssociateTag=#{@amazon_aid}"
  url << "&Operation=ItemLookup"
  url << "&IdType=ISBN&SearchIndex=Books" if asin.size == 13
  url << "&ItemId=#{asin}"
  url << "&ResponseGroup=Medium"
  url << "&Version=#{@amazon_require_version}"
  
  timeout(10) do
    open(url) {|f| f.read}
  end
end

def amazon_get(asin)
  asin.strip!
  begin
    xml =  amazon_call_ecs( asin )
    doc = REXML::Document::new( xml ).root
    item = doc.elements.to_a( '*/Item' )[0]
  rescue 
    print "ERR!"
  end
end

def mk_html(item)
  url = item.elements["DetailPageURL"].text
  img = item.elements[@img_size+"Image"]
  if img
    src = img.elements["URL"].text
    height = img.elements["Height"].text
    width = img.elements["Width"].text
  end
  
  html =  %|<a href="#{url}" >|
  if img
    html += %|<img src="#{src}" height="#{height}" | 
    html += %|width="#{width}" style="#{@img_style}" /></a>|
  else
    html += %|No Image</a>| 
  end
  
end

puts mk_html(amazon_get(ARGV[0]))