dキーで現在のエントリーが何人にdiggられてるかをウィジェット部分に表示します。Fastladderでも動きます。
DiggのAPIを使うときに何らかのアドレス*1をクエリに付けなきゃいけないので、LDRのユーザページのアドレス*2を付けて送信してます。なので、それが嫌な場合はappkeyのところをlocation.hrefとかに変えてください。
APIさわって分かったのは、DiggのAPIはTwitterのAPIと同じでcallbackに.が使えない。エンドポイントは大量に用意されてるのになぁ。あとAPIに関してではないけど、Diggは一つのURLに複数のエントリー(Diggではストーリーって言うらしい)が作れるって初めて知った。
// ==UserScript== // @name How many people Dugg it // @namespace http://shinten.info/ // @include http://reader.livedoor.com/reader/* // @include http://fastladder.com/reader/* // ==/UserScript== (function () { var w = typeof unsafeWindow != "undefined" ? unsafeWindow : window; var _onload = w.onload; var diggCount = 0; var dugg = {}; var appkey = w.$('welcome').childNodes[1].href; var onload = function () { w.Keybind.add('d', function () { var item = w.get_active_item(true); if (!item || dugg[item.id]) return; dugg[item.id] = true; diggCount++; var url = item.link; var param = { link : url, type : 'javascript', count : 3, appkey : appkey, callback : '_digg' + diggCount }; w['_digg' + diggCount] = function (res) { var r = w.$('_digg' + item.id); if (res.total != '0') { res.stories.forEach(function (story) { var span = document.createElement('span'); var a = document.createElement('a'); a.href = story.href; a.style.textDecoration = 'none'; span.innerHTML = story.diggs + 'diggs'; span.title = story.title; a.appendChild(span); r.appendChild(a); }); } else { r.appendChild(document.createTextNode('0diggs')); } delete w['_digg' + diggCount]; document.body.removeChild(s); }; var s = document.createElement('script'); s.type = 'text/javascript'; s.charset = 'utf-8'; s.src = ['http://services.digg.com/stories', query(param)].join('?'); document.body.appendChild(s); }); }; w.entry_widgets.add('ldc_counter', function(feed, item){ return [ '<span id="_digg', item.id, '"><img src="http://digg.com/favicon.ico" style="vertical-align:middle;border:0px;margin-right:5px;"></span>' ].join(''); }, 'How many people Dugg this entry'); w.onload = function () { _onload(); onload(); }; function query(param) { var buf = []; for (var key in param) { var value = param[key]; buf.push([ encodeURIComponent(key), encodeURIComponent(value) ].join('=')); } return buf.join('&'); } })();