Google Readerではてなスターを使おう

Google Readerを使っている方々に朗報です!
いやちょっと大げさです。

以下のグリースモンキースクリプトをインストールすると
Google Reader上ではてなスターが使えます。

// ==UserScript==
// @name          HatenaStar on Google Reader
// @namespace     http://www.google.com/reader
// @description   Automatically load the feature of HatenaStar.
// @include       http://www.google.com/reader/*
// ==/UserScript==

(function(){
    var head = document.getElementsByTagName('head')[0];
    var s = document.createElement('script');
    s.type='text/javascript';
    s.src='http://s.hatena.ne.jp/js/HatenaStar.js'
    var w=unsafeWindow;
    function loadHatenaStarFeature(){
        setTimeout(function(){
            var entries=document.getElementById('entries');
            if(entries&&entries.className=='single-source cards'){
                new w.Hatena.Star.EntryLoader();
            }else{
                setTimeout(arguments.callee,500);
            }
        },500);
    }

    function checkItem(evt){
        if((evt.keyCode==79 &&
            !evt.ctrlKey && evt.shiftKey)||evt.button==0){
            now_feed=false;
            loadHatenaStarFeature();
        }
    }
    function setEntryLoader(){
        if(w.Hatena){
            w.Hatena.Star.EntryLoader.headerTagAndClassName =
                ["h2","entry-title"];
            loadHatenaStarFeature();
        }else{
            setTimeout(callee,500);
        }
    }
    window.addEventListener('load',setEntryLoader,false);
    head.appendChild(s);
    window.addEventListener('keydown',checkItem,false);
    document.getElementById('sub-tree').addEventListener('mousedown',checkItem,false);

})();


こんな感じです。

こういう場合トークンをどうしたらいいのだろう?
google readerで登録すればいいのかな?


追記:フィードを追加で読み出したときの処理がなかったので追加しました。

// ==UserScript==
// @name          HatenaStar on Google Reader
// @namespace     http://www.google.com/reader
// @description   Automatically load the feature of HatenaStar.
// @include       http://www.google.com/reader/*
// ==/UserScript==

(function(){
    var head = document.getElementsByTagName('head')[0];
    var s = document.createElement('script');
    s.type='text/javascript';
    s.src='http://s.hatena.ne.jp/js/HatenaStar.js'
    var w=unsafeWindow;
    var entries_count=0;
    function loadHatenaStarFeature(f){
        setTimeout(function(){
            var entries=document.getElementById('entries');
            if(entries&&entries.className=='single-source cards'){
                if(!f){
                    entries_count=entries.childNodes.length-1;
                    w.Hatena.Star.EntryLoader();
                }else{
                    w.Hatena.Star.EntryLoader.loadAddedEntries();
                }
            }else{
                setTimeout(arguments.callee,500);
            }
        },500);

    }
    function checkItem(evt){
        if((evt.keyCode==79 &&
            !evt.ctrlKey && evt.shiftKey)||evt.button==0){
            loadHatenaStarFeature();
        }
    }
    function addedItem(evt){
        if((evt.keyCode==74 || evt.keyCode==32) &&
           !evt.ctrlKey && !evt.shiftKey){
            loadHatenaStarFeature(true);
        }else{
            var entries=document.getElementById('entries');
            if(entries&&entries.className=='single-source cards' &&
               entries.childNodes.length>entries_count){
                loadHatenaStarFeature(true);
            }
        }
    }
    function setEntryLoader(){
        if(w.Hatena){
            w.Hatena.Star.EntryLoader.headerTagAndClassName =
                ["h2","entry-title"];
            loadHatenaStarFeature();
            w.Hatena.Star.EntryLoader.loadAddedEntries = function(node) {
                var c = w.Hatena.Star.EntryLoader;
                if (!node) node = document.body;
                var entries_org = c.entries;
                c.entries = null;
                var entries;
                entries = c.loadEntriesByHeader(node);
                c.entries = [];
                if (entries && typeof(entries.length) == 'number') {
                    console.log(entries_count + ":" + entries.length );
                    for (var i = entries_count; i < entries.length; i++) {
                        var e = new w.Hatena.Star.Entry(entries[i]);
                        e.showButtons();
                        c.entries.push(e);
                    }
                    entries_count=entries.length;
                }
                c.getStarEntries();
                if (entries_org) {
                    c.entries.push(entries_org);
                    c.entries = w.Ten.Array.flatten(c.entries);
                }
            }
        }else{
            setTimeout(arguments.callee,500);
        }
    }
    window.addEventListener('load',setEntryLoader,false);
    head.appendChild(s);
    window.addEventListener('keydown',checkItem,false);
    window.addEventListener('keydown',addedItem,false);
    document.addEventListener('mouseover',addedItem,false);
    document.getElementById('sub-tree').addEventListener('mousedown',checkItem,false);

})();