追記 20110207: API Level9に従って、コード修正。
前回[AzureaWinで、tweetを翻訳する拡張 #js - c4se記:さっちゃんですよ☆ http://d.hatena.ne.jp/Kureduki_Maari/20110127/1296092606 ]は、Azurea for Windowsへ、独自にGoogle翻訳を組み込んでみましたが、ちょっと欲張って、reply (mention)とretweetを拡張するAzurea拡張を書きました。
欲無さ過ぎじゃないですかねfuck。BANA! #yuraru
動作解説
- reply()
返信先のhashtagを引き継ぐ様、拡張しました。in_replu_toは、返信先だと指定したtweetです。ショートカットキーを、Rに割り振りました。デフォルトのリプライ用ショートカットキーも、Rです。
- replyAll()
「全てにリプライ」と同じ動作です。ショートカットキーを、Shift+Rに割り振りました。
- quoteReply()
テンプレートで書式を指定します。デフォルトのテンプレートは、「@user RT: 〜」です。in_replu_toは、返信先だと指定したtweetへ向けて付きます。ショートカットキーを、Ctrl+Rに割り振りました。
テンプレートは腑抜けた実装に成っています。new Template(String)する時、#{}の中に、任意のJavaScriptを書きます。template.expand(Hash)で、展開します。コード見た方が早いと思います。
QT (QuoteTweet)にしたい場合は、quoteReply()の一行目で、
var template = new Template("QT #{status.user.screen_name}: #{status.text}");
とテンプレートを差し替えます。
- mashirosikiRetweet()
ましろ式RT。「 MRT: ツイートのURL」の形で、in_reply_toは振られません。ショートカットキーを、Ctrl+Tに割り振りました。デフォルトで、T (or W)がRTに振られているからです。
JavaScript Code
// @author = http://c4se.sakura.ne.jp/profile/ne.html // @date = 2011-02-06 (function() { function Template(template_text) { this.text = template_text; } Template.prototype.expand = function(env) { return this.text.replace(/#{(.[^}]*)}/g, function() { with (env) { return eval(arguments[1]); } }); } function reply(status_id) { var status = TwitterService.status.get(status_id), status_user_screen_name = status.user.screen_name, status_hashtags = [];//status.text.match(/#(?:(?:[A-Za-z0-9_]+)|(?:[^\s#]+_))/g); TwitterService.status.getHashes(status_id, status_hashtags); TextArea.show(); TextArea.text = '@' + status_user_screen_name + ' ' + (status_hashtags ? ' ' + status_hashtags.join(' ') : ''); TextArea.in_reply_to_status_id = status_id; TextArea.setFocus(); TextArea.setCursor(status_user_screen_name.length + 2); } function replyAll(status_id) { var status = TwitterService.status.get(status_id), status_users = [];//status.text.match(/@[A-Za-z0-9_]+/g); TwitterService.status.getUsers(status_id, status_users); TextArea.show(); TextArea.text = '@' + status.user.screen_name + (status_users ? ' @' + status_users.join(' @') : '') + ' '; TextArea.in_reply_to_status_id = status_id; TextArea.setFocus(); TextArea.setCursor(TextArea.text.length); } function quoteReply(status_id) { var template = new Template('@#{status.user.screen_name} RT: #{status.text}'); TextArea.show(); TextArea.text = template.expand({status: TwitterService.status.get(status_id)}); TextArea.in_reply_to_status_id = status_id; TextArea.setFocus(); } function mashirosikiRetweet(status_id) { TextArea.show(); TextArea.text = ' MRT: http://twitter.com/' + TwitterService.status.get(status_id).user.screen_name + '/status/' + status_id; TextArea.setFocus(); //TextArea.setCursor(0); } System.addKeyBindingHandler(0x52, // VK_R 0, reply); System.addKeyBindingHandler(0x52, // VK_R 1, // Shift replyAll); System.addKeyBindingHandler(0x52, // VK_R 2, // Ctrl quoteReply); System.addKeyBindingHandler(0x54, // VK_T 2, // Ctrl mashirosikiRetweet); })();
AzureaWinインストールフォルダの、Scriptsへ、.js拡張子にて保存します。
cf.
AzureaWinのOAuthを通す - c4se記:さっちゃんですよ☆ http://d.hatena.ne.jp/Kureduki_Maari/20101212/1292156649
AzureaWinで、tweetを翻訳する拡張 #js - c4se記:さっちゃんですよ☆ http://d.hatena.ne.jp/Kureduki_Maari/20110127/1296092606