Firefox via KeySnailでtwitterに投稿するjavascript


一昨日の日記でご紹介したKeySnail。
firefoxをEmacsにしてくれるKeySnailがすごすぎる

Emacsライクなキーバインドでブラウザを縦横無尽に操作できるというのが素敵すぎます。
気づいてなかったんですが、分割ブラウザというアドオンをいれておけばいつものC-x 0,1,2,3で画面分割までしてくれるんですね。まだ知らない機能ありそうです。

さて、カスタマイズしてこそのEmacs(Emacsぢゃないけど)。一昨日はhrefタグつけてURLとかをコピーする関数を書いてみましたが、懲りずにまた書いてみました。
今回は、最近流行りのtwitterに投稿する関数です。

設定

まず、ソースコード。
またしても、ほぼコピペ。vimperatorプラグイン、twitter.jsのコードの一部から拝借させていただきました。
/lang/javascript/vimperator-plugins/trunk/twitter.js – CodeRepos::Share – Trac
今回使ったprompt.read()については作者のmoozさんが詳しく説明してくれています。
Emacs ユーザや keyconfig ユーザにおすすめのアドオン KeySnail – リタマス
[js]
key.setViewKey([‘C-c’, ‘t’], function (aEvent) {
prompt.read("tweet:", function (aTweet) {
var password;
var username;
var passwordManager = Cc[‘@mozilla.org/login-manager;1’].getService(Ci.nsILoginManager);
var logins = passwordManager.findLogins({},
"http://twitter.com", "https://twitter.com", null);
[username, password] = [logins[0].username, logins[0].password];
var xhr = new XMLHttpRequest;
xhr.open("POST", "http://twitter.com/statuses/update.json", false, username, password);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.setRequestHeader("X-Twitter-Client", "KeySnail");
xhr.setRequestHeader("X-Twitter-Client-Version", "0.1");
xhr.send("status=" + aTweet);
});
}, ‘Twitter投稿’);
[/js]
ソースコード中のUSERNAME、PASSWORDを自分のやつに適宜変えておくと後々面倒くさくないです。
んで、
ソースコードを初期化ファイルにコピペ。初期化ファイルはおそらく右下にあるKeySnailのアイコンを右クリックして、”初期化ファイル” -> “初期化ファイルを編集”で開きます。後はFirefoxを再起動するか右クリックメニューの中にある再読み込みで編集した初期化ファイルを読み込ませればおkです。

使い方

1.C-c t
2.つぶやいてリターン

以上です。
キーバインドはC-c tにしてますが、それyatexのキーバインドやんけーって方は、適宜ソースコード変えてください。

その他諸々

140文字超えてもエラーも出さないし、今のところつぶやく以外に何の機能もないですが、僕が知っているtwitterクライアントの中では最速でつぶやけます。脊髄反射でつぶやく人には、多分すごく便利ではないでしょうか。
他にステータス見るとか、RTつけるとかハッシュタグつけるとかもKeySnailの標準機能でどうにかなるかもです。あ、見てるサイトをつぶやくとかは簡単に出来ますね。ぼちぼちバージョンアップしてみることにします。ま、その前に偉い人がべらぼうにハックしてくれそうな気もしますがね。

20091001追記

IDとパスをスクリプト中に直接書き込まずにchrome特権で持ってくるようにしました。
Thanks to
Twitter / teramako: Chrome特権は使えるのかな。使えるならvimpの …
Twitter / mooz: @teramako ユーザスクリプトは Chrome …

  • Pingback: Firefox via KeySnailでtwitterに投稿するjavascript « とっても! ちゅどん(雑記帳)()

  • 匿名

    ユーザが prompt.read を ESC や C-g でキャンセルした場合 aTweet の部分には null が入りますので、
    はじめのところで
    prompt.read(“tweet:”, function (aTweet) {
    if (aTweet == null) return;
    のようなことをやっておいたほうが良いかもしれません。
    (ただ Enter が押されたときには “” といった空文字列が渡り、キャンセルと区別されるようになっています。)

    • myuhe

      アドバイスありがとうございます。
      早速、手を加えときます。
      また、いろいろ教えてください!!

  • mooz

    ユーザが prompt.read を ESC や C-g でキャンセルした場合 aTweet の部分には null が入りますので、
    はじめのところで
    prompt.read(“tweet:”, function (aTweet) {
    if (aTweet == null) return;
    のようなことをやっておいたほうが良いかもしれません。
    (ただ Enter が押されたときには “” といった空文字列が渡り、キャンセルと区別されるようになっています。)

  • myuhe

    アドバイスありがとうございます。
    早速、手を加えときます。
    また、いろいろ教えてください!!

  • Pingback: 今週の気になるアレOctober 1st()