Livedoor の次は Amazon かよ...って所ですが。既に気づいた方もいらっしゃるかもしれませんが、このサイトの右側の下の方に Amazon の商品を表示しています。すっかり、アフィリエイトづいています。
これ、今読んでいたりする本や聴いている CD などの関連商品です。Amazon Web サービスでは関連商品を調べることができるのですね。ここに表示される商品を見ると、なにに興味を持っているかが分かるっていうスンポー。
Livedoor の天気も Amazon を使った関連商品の表示も PHP で作っているのですが、一番手こずった部分は、実は JavaScript の部分ということは秘密。
REST で XML が返ってくるという部分は Livedoor お天気と同じなので AppleScript でも処理を行うことができます。ということで、今聴いている iTunes の曲のアーティストを使って Amazon で検索してみるスクリプトなんかを。
property tmpFolder : path to temporary items folder from user domain
property tmpFile : POSIX path of ((tmpFolder as Unicode text) & "request.xml")
property LF : ASCII character 10
property baseurl : "http://webservices.amazon.co.jp/onca/xml"
property service : "AWSECommerceService"
property accesskey : "your access key is here." -- ここにアクセスキー
property associateid : "your associate id is here." -- ここにアソシエイト ID
property operation : "ItemSearch"
property SearchIndex : "Music"
property responsegroup : "Request,Small,Images"
property AWSVersion : "2006-05-17"
property pagenumber : "1"
property sort : "salesrank"
tell application "iTunes"
set theArtist to artist of current track
end tell
set encodedText to my encodeURL(theArtist)
set keywords to encodedText
set request to baseurl
set request to request & "?Service=" & service
set request to request & "&AWSAccessKeyId=" & accesskey
set request to request & "&AssociateTag=" & associateid
set request to request & "&Operation=" & operation
set request to request & "&Keywords=" & keywords
set request to request & "&SearchIndex=" & SearchIndex
set request to request & "&ResponseGroup=" & responsegroup
set request to request & "&Page=" & pagenumber
set request to request & "&Version=" & AWSVersion
set request to request & "&Sort=" & sort
do shell script "curl -o " & quoted form of tmpFile & " " & quoted form of request
tell application "System Events"
set xmlFile to XML file tmpFile
set root to XML element 1 of xmlFile
set itemsElement to XML element "Items" of root
set html to ""
repeat with thisElement in (XML elements of itemsElement whose name is "Item")
set theURL to value of XML element "DetailPageURL" of thisElement
set itemTitle to value of XML element "Title" of XML element "ItemAttributes" of thisElement
set html to html & "<a href=\"" & theURL & "\">" & itemTitle & "</a>" & LF
end repeat
end tell
html
on encodeURL(theText)
if not ((theText starts with "'") and (theText ends with "'")) then
set theText to quoted form of theText
end if
try
do shell script "echo " & theText & " | " & "php -r 'echo rawurlencode(`cat -`);'"
on error eMessage number eNumber
tell application (path to frontmost application as Unicode text)
activate
display dialog (eNumber & return & eMessage & return & return) as Unicode text buttons {"OK"} default button 1 with icon 0
end tell
return ""
end try
end encodeURL
検索結果を使って商品へのリンクタグを作っています。実際に利用するには Amazon でデベロッパー登録をしてアクセスキーをもらう必要があります。アフィリエイト ID は特に必要ないですが、あると検索結果の商品の URL にアフィリエイト ID が埋め込まれます。
検索結果がなかったときと Amazon でエラーが起きた時の処理は行っていませんので、その辺りご注意を。
0 件のコメント :
コメントを投稿