ブログにAmazonへのアサマシを貼るときに使っているスクリプト。tDiaryのAmazonプラグインからパクっていじった。
#!/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]))