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
|