読者です 読者をやめる 読者になる 読者になる

LDRにフィード毎のはてなスターの総数を表示するGreasemonkey

greasemonkey

JSONPを使ったんだけどスクリプトのロードまでの遅延をどうしようか考えた結果innerHTMLで書き換える方法にしました。なにかうまい方法があったら教えてください。

はてスタのAPIのバグだと思うんだけどスターの数が0のURLだと404が返ってくる、のでエラーが出ます。例えば、http://s.hatena.ne.jp/blog.json/http://www.example.com/とか。修正お願いします!>id:hatenastar

あと、ScriptLoaderがLDRの内部で使われていないからだと思うけど、DEBUGがtrueだったのでfalseにした。

// ==UserScript==
// @name           LDR with Hatena::Star count
// @namespace      http://shinten.info/
// @include        http://reader.livedoor.com/reader/
// ==/UserScript==
//
// based on http://la.ma.la/blog/diary_200610182325.htm
//
(function () {
    var w   = (typeof unsafeWindow == 'undefined') ? window : unsafeWindow;
    var api = 'http://s.hatena.ne.jp/blog.json/';

    with (w) {
        ScriptLoader.DEBUG = false;
        channel_widgets.add('hs_counter', function(feed){
            var loader = new ScriptLoader(api + feed.channel.link);
            loader.get({}, function (obj) {
                if ($('hs-' + feed.subscribe_id))
                    $('hs-' + feed.subscribe_id).innerHTML = obj.star_count;
            });
            return [
                '<img src="http://s.hatena.ne.jp/images/star.gif">',
                '<span style="color:#f4b128;font-weight:bold;" id="hs-',
                feed.subscribe_id,
                '">0</span>'
            ].join('');
        });
    }
})();