require 'open-uri' require 'pp' require 'rexml/document' include REXML require "win32/clipboard" include Win32 def getPage(asin) uri = 'http://webservices.amazon.co.uk/onca/xml?Service=AWSECommerceService' uri = uri + '&AWSAccessKeyId=**PUT YOUR KEY HERE**' uri = uri + '&ResponseGroup=Small,ItemAttributes' uri = uri + "&Operation=ItemLookup&ItemId=#{asin}" string = '' open(uri) do |f| lines = f.readlines lines.each { |line| string += line } return string end end def getBookDetails() isbn = Clipboard.data return ('%s is not a valid isbn' % isbn) if (not isValidISBN(isbn)) asin = isbn.delete('-') doc = Document.new(getPage(asin)) result = '' items = doc.elements.to_a('ItemLookupResponse/Items/Item') items.each do |item| result += "" result += "#{item.elements['ItemAttributes/Title'].text}\n" end Clipboard.set_data result return result end def checkDigit(isbn) string = isbn.delete('-')[0..9] total = 0 for i in 0..8 char = string[i] total = total + (10 - i) * ('0123456789'.index(char)) end return '0X987654321'[total % 11] end def isValidISBN(isbn) str = isbn.delete('-')[0..10] return ((str.length == 10) and (checkDigit(str) == str[9])) end print getBookDetails()