Home > ウェブサービス | コンピュータ > StackStockBooksAPIがよく分からない

StackStockBooksAPIがよく分からない

蔵書管理に利用しているStack Stock Booksが最近APIを公開しました. ふと思い立って,GreasemonkeyからこのAPIを叩けないかと思って書いてみました.

  • APIではOpenIDによる認証が行えないため、利用者IDとAPIトークン(代替識別子)により認証を行います。
  • 短期間に大量のAPI呼び出しを行わないでください。 # 入力、出力ともに文字コードはUTF-8です。
  • 入力はJSON形式、またはYAML形式です。
  • 入力のJSON形式で連想配列({key: value}など)を指定する場合、キーのコロンの後に、半角スペースが必要です。
  • 出力はJSON形式です。
  • 出力のJSON形式に含まれるASCII以外の文字は、\uXXXX形式で表記されます。

Stack Stock Books - API

ですが,なんかうまくいきません.最初はGM_xmlhttpRequestでheadersを指定していなかったら

「リクエストが指定されていません」

と返ってきた.入力のJSONがダメなのかなと思っていろいろいじっていたけど,headersを書いたら とりあえず

「処理されました」

と返ってくるようになった.でも,それ以外のレスポンスは

undefined

となっていて結局何もできていない.もうお手上げなので,メールをしてみた.返答待ち.

とりあえず現状のソースは以下の通り.こんなのインストールしちゃだめよ^^

// ==UserScript==
// @name          Amazon to StackStockBooks
// @namespace     http://blog.riywo.com/
// @version       0.1
// @description   Register the book to StackStockBooks from Amazon.
// @include       http://*.amazon.co.jp/*
// ==/UserScript==

(function(){
    var isbn='';
    makeLink();

    function makeLink(){
//        document.body.parentNode.innerHTML.match(/ISBN-13:[^9]*(978-4\d{9})/);
        document.body.parentNode.innerHTML.match(/ASIN:[^4]*(4(\d{8}|-[\d-]{9}-)[\dX])/);
        if (RegExp.$1 != ''){
            isbn = RegExp.$1.replace(/-/g,'');
            var header = document.evaluate("//b[@class='sans']",
                                           document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
//            var header = document.evaluate("//div[@class='buying']//b[@class='sans']",
//                                           document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
            if(header){
                var ssb_link = document.createElement('span');
                ssb_link.setAttribute('id', 'ssb_link');
                ssb_link.innerHTML = 'Stack Stock Books!';
                ssb_link.addEventListener('click', StackStockBooks, false);
                header.parentNode.insertBefore(ssb_link, header.nextSibling);
            }
        }
    }

    function StackStockBooks(){
        var ssb_link = document.getElementById("ssb_link");
        var userid = "userid";
        var token = "token";
        var url = "http://stack.nayutaya.jp/api/" + userid + "/" + token + "/stocks/update.1";
        var nowDate = new Date();
        var year = nowDate.getFullYear();
        var month = nowDate.getMonth() + 1;
        var date = nowDate.getDate();
        if(month <10){
            month = "0" + month;
        }
        if(date <10){
            date = "0" + date;
        }
        var fullDate = year + "-" + month + "-" + date;
        var inputJSON = "[{asin: \""+isbn+"\", date: \""+fullDate+"\", state: \"wish\", public: true}]";
//        alert(encodeURIComponent(inputJSON));
        alert(inputJSON);
        GM_xmlhttpRequest({
            method: "POST",
            url: url,
            headers: {
                    "User-agent": "Mozilla/4.0 (compatible) Greasemonkey",
                    "Accept": "application/atom+xml,application/xml,text/xml",
                    "Content-Type": "application/x-www-form-urlencoded",
            },
//            data: "request=" + inputJSON,
            data: "request=" + encodeURIComponent(inputJSON),
            onload: function(response){
                var getJSON = eval('('+ response.responseText +')');
                var message = getJSON.message;
                ssb_link.innerHTML = message;
                alert(getJSON.version+"\n"+getJSON.success+"\n"+getJSON.response.message+"\n"+getJSON.response.title);
            }
        });
    }
})();

Comments:0

Comment Form
Remember personal info

Trackbacks:1

Trackback URL for this entry
http://blog.riywo.com/2008/04/29/004943/trackback
Listed below are links to weblogs that reference
StackStockBooksAPIがよく分からない from As a Futurist...
trackback from As a Futurist... 08-04-29 (火) 1:07

StackStockBooksAPI動いてた

            さっき愚痴ったのはミスだった>< 運営さんすみませんorz


            StackStockBooksAPIがよく分からない - As a Futurist…


            レスポンスは相変わらず「undefined」だけど,実はちゃ...

Home > ウェブサービス | コンピュータ > StackStockBooksAPIがよく分からない

Tag Cloud
Amazon
Banners
フィードメーター - As a Futurist... Creative Commons License track feed スカウター : As a Futurist...

Return to page top