001:	/***********************************************************
002:	
003:		hspinet.dllとXMLパーサー(MSXML)でAmazon Web Service(AWS)を利用する
004:	
005:			【2006/1/4 更新】
006:	
007:	***********************************************************/
008:	
009:	/**********************************/
010:	/* ヘッダファイル、定数マクロなど */
011:	/**********************************/
012:	#include "hspinet.as"
013:	
014:	#define	AWS40_BASE_URL		"http://webservices.amazon.co.jp/onca/"
015:	#define	AWS40_FILENAME		"xml"
016:	#define	AWS40_PRM_SERVICE	"?Service=AWSECommerceService"
017:	#define	AWS40_PRM_AWS_ID	"&AWSAccessKeyId="
018:	#define	AWS_ID			""	// Access Key ID または Subscription ID を指定する
019:	#define	AWS40_PRM_OP		"&Operation=ItemSearch"
020:	#define	AWS40_PRM_INDEX		"&SearchIndex=Books"
021:	#define	AWS40_PRM_RESGROUP	"&ResponseGroup=Small"
022:	#define	AWS40_PRM_SORT		"&Sort=salesrank"
023:	#define	AWS40_PRM_BNODE		"&BrowseNode=492352"
024:	// 492352 = 本 > ジャンル別 > コンピュータ・インターネット > プログラミング
025:	
026:	#define	DL_NAME		"res.xml"
027:	
028:	#define	TAGNAME_URL	"DetailPageURL"
029:	#define	TAGNAME_TITLE	"Title"
030:	
031:	#define	HTML_TITLE_1	"Amazon売り上げランキング : "
032:	#define	HTML_TITLE_2	"本 > ジャンル別 > コンピュータ・インターネット > プログラミング"
033:	#define	HTML_NAME	"ranking.html"
034:	
035:		/**********/
036:		/* 前処理 */
037:		/**********/
038:		netinit
039:		if stat {
040:			dialog "ネットワーク接続ができない状態です。スクリプトを終了します。",1,"エラー"
041:			end
042:		}
043:	
044:		filename = AWS40_FILENAME
045:		filename += AWS40_PRM_SERVICE
046:		filename += AWS40_PRM_AWS_ID + AWS_ID
047:		filename += AWS40_PRM_OP
048:		filename += AWS40_PRM_INDEX
049:		filename += AWS40_PRM_RESGROUP
050:		filename += AWS40_PRM_SORT
051:		filename += AWS40_PRM_BNODE
052:	
053:		/**********************************************************/
054:		/* hspinet.dllでAWSにアクセス、レスポンスをファイルに保存 */
055:		/**********************************************************/
056:		neturl AWS40_BASE_URL
057:		netdlname DL_NAME
058:		mes "データを取得中です..."
059:		netload filename
060:	;	exec DL_NAME,16	// ダウンロードしたファイルを拡張子"xml"に関連付けられたアプリで表示
061:	
062:		/***********************************/
063:		/* MSXMLを利用してレスポンスを解析 */
064:		/***********************************/
065:	
066:		/* 保存したファイルを読み込む */
067:		newcom oDom,"Microsoft.XMLDOM"
068:		oDom("async") = "FALSE"
069:		oDom->"load" DL_NAME
070:	
071:		/* Itemごとの商品情報を取得 */
072:		comres elmnts_url
073:		oDom->"getElementsByTagName" TAGNAME_URL
074:		comres elmnts_title
075:		oDom->"getElementsByTagName" TAGNAME_TITLE
076:	
077:		repeat elmnts_url("length")	// 商品数
078:			node = elmnts_title("item",cnt)
079:			node2 = node("firstChild")
080:			titles(cnt) = ""+node2("nodeValue")
081:	;		mes titles(cnt)
082:			node = elmnts_url("item",cnt)
083:			node2 = node("firstChild")
084:			usls(cnt) = ""+node2("nodeValue")
085:	;		mes usls(cnt)
086:		loop
087:	
088:		/********************************/
089:		/* 商品情報からHTMLデータを生成 */
090:		/********************************/
091:		html = "<html><head>"
092:		html += "<title>"+HTML_TITLE_1+HTML_TITLE_2+"</title>"
093:		html += "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=Shift-JIS\">"
094:		html += "</head><body>"
095:		repeat length(titles)
096:			rank = cnt+1
097:			html += ""+rank+"位: <a href=\""+usls(cnt)+"\" target=\"_blank\">"+titles(cnt)+"</a><br>"
098:		loop
099:		html += "</body></html>"
100:	
101:		notesel html
102:		notesave HTML_NAME
103:		exec HTML_NAME,16	// 保存したファイルを拡張子"html"に関連付けられたアプリで表示
104:		end