livedoor ReaderからはてなブックマークにポストするGreasemonkeyスクリプト
ユーザー名とパスワード設定して使う。はてなブックマークにbでコメントなしで登録、Shift+bでコメントを書いて登録する。
インストール
// ==UserScript== // @name postbhatena // @namespace http://d.hatena.ne.jp/f96q/ // @include http://reader.livedoor.com/reader/ // ==/UserScript== var user = "user"; var pass = "pass"; var w = unsafeWindow; function useWsse() { var script = document.createElement("script"); script.type = "text/javascript"; script.src = "http://reader.livedoor.com/js/wsse.js"; document.getElementsByTagName("head")[0].appendChild(script); } function post(name, pass, link, comment) { var body = ['<entry xmlns="http://purl.org/atom/ns#">', "<title>dummy</title>", '<link rel="related" type="text/html" href="', link, '" />', ((comment != "") ? '<summary type="text/plain">' + comment + "</summary>" : ""), "</entry>"].join(""); var req = { method: "POST", url: "http://b.hatena.ne.jp/atom/post", headers: { "Accept": "application/x.atom+xml, application/xml, text/xml, */*", "X-WSSE": w.wsseHeader(user, pass), }, data: body, onload: function(r) { w.message("bookmerk:" + r.status + r.statusText); } }; setTimeout(function() {GM_xmlhttpRequest(req); }, 0); } function bookmerk(comment) { var item = w.get_active_item(true); if (item) { var link = item.link.replace(/#/, "%23"); var r = comment ? w.prompt(item.title) : ""; post(name, pass, link, r); w.message(["bookmerk:", item.title, comment ? ":" + r : "" ].join("")); } } var _onload = w.onload; w.onload = function() { _onload(); useWsse(); w.Keybind.add("b", function() { bookmerk(false); }); w.Keybind.add("B", function() { bookmerk(true); }); }