$shibayu36->blog;

株式会社はてなでエンジニアをしています。プログラミングや読書のことなどについて書いています。

ダイアリー編集中にtwitter記法を展開するgrease monkeyを書いた

 twitterのつぶやきをはてなダイアリーでまとめているときに、どの記法がどのつぶやきかわからなくなることがあると思います。一応プレビューを見ればわかると言えばわかりますが、非常に面倒です。なので記法をドラッグするだけでtipsのような形で内容を表示するgrease monkeyスクリプトを書いてみました。
 http://gist.github.com/474003におきました。

機能

 今回のgrease monkeyスクリプトを使うと、次のように表示する事が出来ます。見たい記法をドラッグするだけで、ユーザ名とつぶやきが表示されます。
f:id:shiba_yu36:20100727234459p:image

注意点

 今回はtwitterAPIをたたいているため、同じIPアドレスから1時間350回という制限を受けます。使い過ぎには気をつけてください。

わからなかった部分

 本当は一度表示したものはキャッシュして使い回せるようにしたかったのですが、GM_xmlhttpRequestでそれをどうすればよいかわからず、できていません。例えば、GM_xmlhttpRequestの中でグローバルに定義した変数に代入ができませんでした。次のコードが参考です。

var response;
GM_xmlhttpRequest({
    method: 'GET',
    url: 'http://api.twitter.com/1/statuses/show/' + tweet_id + '.json',
    headers: {
        'User-agent': 'Mozilla/4.0 (compatible) Greasemonkey'
    },
    onload: function(responseDetails) {
        response = responseDetails.responseText;
    }
});
alert(response);  //undefinedが表示される

 スコープの問題なのかなんなのかわからなかったのですが、これが出来ないとキャッシュが出来ません。もし、ここが間違っているとか、こうすればよいとかの指摘があれば教えてください。