TalkLineにPostするためのLDR用GreasemonkeyScript
TalkLineという自作マイクロブログにLDRからPostするためのGreasemonkeyScript
-
// ==UserScript==
-
// @name TalkLineForm
-
// @namespace http://yusukezzz.dyndns.org/
-
// @description TalkLine post form for Livedoor Reader
-
// @include http://reader.livedoor.com/*
-
// ==/UserScript==
-
-
(function(){
-
var w = (typeof unsafeWindow == 'undefined') ? window : unsafeWindow;
-
var description = 'TalkLine post form for Livedoor Reader';
-
$client = 'TalkLineForm for LDR';
-
-
w.myfunc = function(url, title){
-
$status = document.getElementById('status_' + url);
-
window.setTimeout(function(){
-
GM_xmlhttpRequest({
-
method: 'POST',
-
headers: {'Content-type': 'application/x-www-form-urlencoded'},
-
url: 'http://133.78.124.70/post/',
-
data: 'status=' + encodeURIComponent($status.value) + '&title=' + encodeURIComponent(title) + '&url=' + encodeURIComponent(url) + '&client=' + $client,
-
onload: function(responseDetails) {
-
if(responseDetails.responseText != 'success') alert('Failed');
-
else $status.value = '';
-
}
-
});
-
}, 0);
-
}
-
-
w.entry_widgets.add('talkline_form', function(feed, item){
-
var url = item.link.replace(/#/g,'%23');
-
var title = item.title
-
return [
-
'<img src="http://133.78.124.70/favicon.ico">',
-
'<input type="text" id="status_', url ,'" value=""/>',
-
'<input type="submit" id="btn_', url ,'" value="post" onclick="myfunc(\'', url,'\',\'', title ,'\')"/>',
-
].join('');
-
}, description);
-
})();
LDRで用意されてるくっつける用のメソッドでinputを用意し、GM_xmlhttpRequestでpostしています
GM_xmlhttpRequestでPOSTメソッドを使うには
headers: {'Content-type': 'application/x-www-form-urlencoded'}
が必要です
また、Railsならば受け取るアクションでXSS対策のトークンチェックを無効化、又は対応させる必要があります
(この辺のセキュリティ対策は正直良く分かってません)
GM_xmlhttpRequestをwindow.setTimeoutでラップしてあるのはセキュリティ上の配慮のようです
詳細は良く分かりません><
キーボードショートカットや投稿されてるpostを表示させたり、まだまだ弄る余地はいくらでもありますが、
とりあえずこれでLDRからPost出来るようになったので、後はLDRだけに留まらず、通常サイトからのpost&twitterへのクロスポストに対応させたいと思います