TwitterのWebで新着Tweetを自動更新するようにするブックマークレット

ちょっと作ってみた。はてなダイアリーにはブックマークレットのコードが書けないので、別なページからどうぞ。

これは何?

TwitterWebブラウザで開いていると、最近は自動的に新着Tweet数を教えてくれるようになった。

さらにこの通知の部分をクリックすると、新着Tweetをその場に読み込んでくれる。ホーム以外に、listや検索結果にも同じ機能があるようだ。

Twitterをブラウザに開いて、このブックマークレットを実行する。何も起こってないように見えるけど、実は3秒ごとにWebページ内を監視して、通知の部分が表示されていれば自動的にクリックする。つまり、自動的に新着Tweetが読み込まれるようになる。もちろんホームでもlistでも検索結果でも使える。

Webブラウザを開きっぱなしにするだけで、それなりにTwitterウォッチングができるようになる。しかもAPI利用数を消費しない。

動作環境

以下の環境は動いてるっぽい。他は試してない。

いずれもMac版。

あと、ちょっと試してみたらiPhoneSafariでも動いた。ただモバイル版ではなくPC版を見る必要があって、iPhoneの画面上でPC向けのTwitterを開いてもあんまり見やすくないし重いので、現実には使えないと思う。

仕組み

改行やインデントを加えたコードは以下。

(function(){
  var l = (function(){
    return document.getElementById('results_update');
  });
  if(l()){
    setInterval(function(){
      if(l().style.display == 'none')return;
      var e = document.createEvent('MouseEvent');
      e.initMouseEvent(
        'click', true, true, window,
        0, 0, 0, 0, 0, false, false, false, false, 0, null
      );
      l().dispatchEvent(e);
    }, 3000);
  }
})();

lっていう関数でいつでも新着通知のリンクを取得できるように準備しておいて、setIntervalで3秒おきにそのリンクのスタイルシートのdisplayをチェックし、noneじゃないときはクリックイベントを強制的に発生させている。

つまり、3秒おきに新着通知が表示されているかどうかを調べて、表示されているなら無理矢理クリックさせてる、という感じ。

TwitterのWebはよくできていて、listや検索結果の新着通知も全く同じ仕組みになっていたので、このブックマークレットが共通で使えてる。

注意

将来TwitterのWebの仕様が変わったら使えなくなると思う。そのときはごめん。