AmazonECS4.0 対応ASIN Search
ちょっと作ってみたので公開してみる。
公開しておけばなんかの参考にはなるだろうか
require "open-uri" require 'rexml/sax2parser' require 'cgi' class AmazonECS attr_accessor :associate_id,:subscription_id,:output_xml def initialize() @output_xml = nil end def asinSearch(asin) xml = "" open(makeASINSearchURL(asin)) { |f| while buf = f.read(4096) xml << buf end } if @output_xml then File.open(@output_xml,"w") { |f| f << xml } end parseResponse(xml) end def makeASINSearchURL(asin) token = "" search_token = asin asin.each{ |id| token << id << "," } %Q[http://webservices.amazon.co.jp/onca/xml?Service=AWSECommerceService&SubscriptionId=#{@subscription_id}&AssociateTag=#{@associate_id}&Operation=ItemLookup&ResponseGroup=Medium&ContentType=text/xml&IdType=ASIN&ItemId=#{token}] end def makeAuthorSearchURL(author,page=1) author = CGI.escape(author) %Q[http://webservices.amazon.co.jp/onca/xml?Service=AWSECommerceService&SubscriptionId=#{@subscription_id}&AssociateTag=#{@associate_id}&Operation=ItemSearch&ResponseGroup=Medium&ContentType=text/xml&SearchIndex=Books&Author=#{author}&Page=#{page}] end def parseResponse(xml) parser = REXML::SAX2Parser.new( xml ) errors = [] path = [] args = [] ret = [] parser.listen( :start_element) {|uri, localname, qname, attributes| path.push({:name=>localname,:attr=>attributes}) case localname when "Error" errors.push({}) when "Argument" args.push({:name=>attributes["Name"],:value=>attributes["Value"]}) when "Item" print "Item" ret.push({}) end } parser.listen( :end_element) {|uri, localname, qname| path.pop } parser.listen( :characters){|text| elmname = path.last[:name] case elmname when "Code","Message" errors.last[elmname] = text if path[-2][:name] == "Error" when "ASIN","DetailPageURL" ret.last[elmname] = text if path[-2][:name] == "Item" when "Title","PublicationDate","ReleaseDate","Publisher","ProductGroup","Studio","Label" ret.last[elmname] = text if path[-2][:name] == "ItemAttributes" when "Author","Artist" if path[-2][:name] == "ItemAttributes" then ret.last[elmname] = [] unless ret.last[elmname] ret.last[elmname].push(text) end when "Creator" if path[-2][:name] == "ItemAttributes" then ret.last["Creator"] = [] unless ret.last["Creator"] ret.last["Creator"].push({"name"=>text,"role"=>path.last[:attr]["Role"]}) end when "URL" imagename = path[-2][:name] case imagename when "SmallImage","MediumImage","LargeImage" ret.last[imagename] = text end end } parser.parse return ret,errors,args end end aws = AmazonECS.new aws.output_xml = "/tmp/result.xml" aws.associate_id = "moleskindiary-22" aws.subscription_id = "1662RT4B1C0H8X4PP382" ret,errors,args = aws.asinSearch(%w{9999999999 B0006D3GPM B0002MOL1A 4047136468 B000232BMK 4061496468 4003360125}) print "result\n" ret.each {|item| item.each {|key,data| print key,"=",data,"\n" } } print "error\n" errors.each {|item| item.each {|key,data| print key,"=",data,"\n" } } print "args\n" args.each {|item| item.each {|key,data| print key,"=",data,"\n" } }
注意すべき点
ECS4.0を利用するにはDevelopers TokenじゃなくてSubscription idが必要です。
このガイドにあるサンプルリクエストを試してみるためには、Amazon Web サービスの登録IDを以下のURLから取得する必要があります。http://www.amazon.com/gp/aws/registration/registration-form.html
ECS4.0はSmallなどImageがない場合、SmallImageなどのタグ自体が返ってきません。(3.0だとサイズ1の画像が帰ってくるんだっけ?)
レスポンスでどんなタグが帰ってくるかはTry&Errorで研究してやってみないとわかりません。
参考URL
- ECS 3.0 から 4.0 への移行
- http://aws.typepad.com/aws_jp/2004/11/ecs_30_40.html
- Amazon ECS 4.0 解説1 RESTリクエストのパラメータ
- http://www.goodpic.com/mt/archives2/2004/10/amazon_ecs_401.html
Firefox Extension 「Hatenabar」リリース
http://d.hatena.ne.jp/hatenadiary/20041220#1103522942
ついにFireFox版はてなツールバーが登場。
早速インストールしてみましたが一つ問題が。
ツールバーに青いアイコンが三つ並んでいるのですが、うちの環境だとどれがどれだが区別できません。
青地に薄青い字でA、D、Gと書かれているので識別できませんがな。
はてなの中の人はよっぽどいいディスプレイを使っているんだろうか?
Nif色に染まりゆくはてな
久しぶりにはてなダイアリーのトップページ(http://d.hatena.ne.jp/)を見ましたが、激しく違和感が。
「ブログる場合ですよ!!」って広告が嫌。なんで稲川淳二やサトエリの写真がトップを飾っているんだ!!!!(倉田真由美は許す)
こんな色ものがトップにのってるなんて俺のはてなじゃないやいヽ( `Д´)ノ
稲川淳二印のブログサービスなんてクールの対極ではないか。ココログはNifの時代からそういうところだからいいとして、はてながNif色に染まるのは許せん。
Niftyから亡命してきた某CTOが悪いのだろうと無根拠に断言しておこう。悪いウイルスでも連れてきたか。
また退会したい熱が再開してきたな。ううむ。
ああ、でも眞鍋かをりを引っ張ってきたら許しますよ、僕は。
既視感
リングの上でふたりの闘士が戦っているのだが、片方が立ち技のボクサーでもう片方がマットに寝っ転がっているという光景はどこかで見た気がする。
今回もまた同じ展開になるのか。
前回と違うのは、ボクサーの方も寝技の備えがあること。でも寝技になると戦いはリングの外に移ってしまう。実況くらいは聞けるだろうが、観客はもう蚊帳の外だ。
もうひとつの違いは、寝っ転がっている奴はこれまでさんざん、これからは立ち技の時代だと公言しまくっていたことだ。寝っ転がってる奴をstand upとかいって挑発しまくっていたのに、自分が立ち技で挑まれるとあっさり寝っ転がるってどうよ?
十年くらいしたら板垣恵介あたりがブロッグラー・刃牙とかいって漫画化してくんないかね。
もうそういう世界でしょ、あれは。