Home > Twitter

Twitter Archive

特定のユーザ間のやり取りを表示する Twitter Stream Viewer を作りました

これはなに?

Twitter の特定のユーザ間のやり取りを分かりやすく表示します。
以下のリンクからどうぞ。

Twitter Stream Viewer

使い方

ユーザ名を半角スペース区切りで入力(例:「id_a id_b」)して「送信」ボタンをクリックすると、そのユーザのタイムラインを取得します。
入力したユーザ間での @ 発言(@id_a, @id_b)は、背景色が赤くなりますので、やり取りの流れを把握するのに便利です。
また、発言内の @ リンクをクリックすると、そのユーザを追加して表示します。

きっかけ

iPhone 用の Twitter クライアントである NatsuLion for iPhone に「Pair Timeline」という機能があります。これはある 2 人のタイムラインを表示するもので、やり取りを把握するのにとても便利でした。
そこで Web 上で実現してみようと思ったのがきっかけです。

今後やりたいこと

  • Twitter の個別発言ページから、そのユーザと @ 先を表示するリンクを追加するグリモン(近いうちに作ります)→作りました Twitter Stream Viewer Link for Greasemonkey (追記@20081213)
  • Show More Tweets 機能(もっと過去に遡って発言を取得)→期間を絞った検索をできるようにしました (追記@20090315)
  • fav れるように→できるようにしました (追記@20090108)
  • 発言まとめに使えるように何らかのフォーマットで書き出し→プレーンテキストで書き出しできるようにしました (追記@20090517)

などをやりたいなぁと思ってます。

その他

一応 Win: IE 6, Firefox 2.x, Mac: Safari 3.2.1, Firefox 3.0.1 で動作確認しています。

ご意見、不具合などあれば @yusuke0927 までお気軽にどうぞ。

空目 bot を作りました

これは何?

Twitter の「○○を××に空目した」という発言を抽出して、Twitter に投稿する bot です。

Twitter / sorametter

しくみ

  • Twitter検索 : 空目 空目 - twitter検索 から発言を取得(1 時間毎)
  • 正規表現でマッチする発言のみを抽出して、テーブルに格納
  • テーブルに格納した中から発言していないものをランダムに 1 つ取得して、Twitter に post
  • 他の時報 bot などと発言が重なってタイムラインが早くなりすぎるのを避けるため、発言は毎時 30 分 1 時間に 2 回しています。

謝辞

発言を抽出するために Twitter検索を使わせていただいています。shin1×1 さんに感謝します。

追記@20090124

最近、仕様を少し変更しました。

Twitter の投稿日時のフォーマットを変更するグリモン

Twitter Time Converter

これは何?

Twitter に表示される投稿日時(3 hours ago など)を yyyy/mm/dd hh:mi 形式に変更する Greasemonkey です。

きっかけは自分のログを振り返っている時に、「17 時間前」などと表示されても直感的にいつだったのかが分かりにくかったからです。

対応しているページは、Friends Timeline, Replies, Archive, Public Timeline, Favorites です。Permalink, Direct Messages には対応していません。

使い方

下記リンクからインストールしてください。 Firefox/Greasemonkey または Safari/Greasekit が必要です。

Twitter Time Converter – Userscripts.org

技術的なところ

Twitter のページの HTML に、ISO 8601 形式の日付が abbr タグの title 属性に入っているのですが、その ISO 8601 形式の日付が JavaScript の Date.parse で解釈できないようなので、仕方なく手動で parse しました。

parse については、以下のライブラリを参考にさせていただきました。感謝。
[JSAN] Date.W3CDTF - ISO-8601日時フォーマット対応JavaScriptクラス

関連リンク

ソース

// ==UserScript==
// @name           Twitter Time Converter
// @namespace      http://www.sukechan.net/
// @description    The format of posted date is change.
// @include        http://twitter.com/*
// @version        1.0
// ==/UserScript==

(function() {
  var f = function() {
    var x = document.evaluate('//a[@class="entry-date"]/abbr', document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
    for (var i = 0; i < x.snapshotLength; i++) {
      var item = x.snapshotItem(i);
      var ds = parseDate(item.getAttribute("title"));
      if (ds) item.parentNode.innerHTML = ds;
    }
  }
  function parseDate(s) {
    var arr = s.split(/[^0-9]/);
    if (arr.length == 8 ) {
      for (var j = 0; j < arr.length; j++) arr[j] = arr[j] - 0;
      var msec = Date.UTC(arr[0], arr[1] - 1, arr[2], arr[3], arr[4], arr[5]);
      if (s.indexOf("+") < 0) arr[6] *= -1;
      msec -= (arr[6] * 60 + arr[7]) * 60 * 1000;
      var dt = new Date(msec);
      return dt.getFullYear() + "/" + padZero(dt.getMonth() + 1) + "/" + padZero(dt.getDate()) + " " + padZero(dt.getHours()) + ":" + padZero(dt.getMinutes());
    } else {
      return;
    }
  }
  function padZero(s) {
    return ("0" + s).slice(-2);
  }
  f();
  addFilter(f);
  function addFilter(filter, i) {
    i = i || 4;
    if (window.AutoPagerize && window.AutoPagerize.addFilter) {
      window.AutoPagerize.addFilter(filter);
    }
    else if (i > 1) {
      setTimeout(arguments.callee, 1000, filter, i -1);
    }
  }
})();

Google Trends のキーワードを投稿する Twitter bot

Google で検索数が急上昇しているキーワードを、Twitter に投稿する bot を作りました。

Twitter / GoogleTrendsFan

元になるページはこちら。
急上昇ワード

実際には、こちらの XML 形式で返してくれる API から取得しています。
http://www.google.com/m/services/trends/get

今のところ 1 時間毎 cron で取得し、トップ 10 を配信しています。

ソース

<?php
require_once 'HTTP/Client.php';

// パラメータ
$username = 'google_trends';
$password = '**********';
$auth = array(
  'Authorization' => 'Basic '.base64_encode($username.':'.$password)
);
$link_url = 'http://tinyurl.com/6r7zux';

// Google Trends の XML からキーワードを抽出
$items = array();
$xml = simplexml_load_file('http://www.google.com/m/services/trends/get');
if($xml) {
  for($i = 0; $i < 10; $i++) {
    $query = $xml->item[$i]->query;
    if($query) {
      $items[] = mb_convert_encoding($query, 'UTF-8', 'auto');
    }
  }
} else {
 return;
}
$status = $link_url.' '.implode(', ', $items);

// Twitter に post
$client =& new HTTP_Client(null, $auth);
$http_status = $client->post("http://twitter.com/statuses/update.xml", array('status' => $status));
?>

やってることはいたって単純。SimpleXML を使って Google Trends の XML を取得して、Twitter に BASIC 認証して発言するだけです。

関連リンク

Twitter に Google Maps へのリンクを追加するグリモン

Twitter Google Maps Link

これは何?

Twitter の発言で、L:住所 と表示されているロケーション情報に、Google Maps へのリンクを追加する Greasemonkey です。

使い方

下記リンクからインストールしてください。例によって Greasemonkey が必要です。(Safari の場合は GreaseKit)

インストール後、Twitter の L:住所 という部分が Google Maps へのリンクになります。

twittergooglemapslink.user.js (version 1.0)
Userscripts.org で管理することにしました。
Twitter Google Maps Link – Userscripts.org

その他、技術的なこと

既に同じグリモンがあるかもしれませんが、見つからなかったので作りました。

今回、初めて XPath を使いました。最初 DOM でやろうと思ったんですが、処理が煩雑になるし XPath の方が早いらしいので。以下のリンクを参考にしました。

// ==UserScript==
// @name           Twitter Google Maps Link
// @namespace      http://www.sukechan.net/
// @description    Location is convert into the link to Google Maps.
// @include        http://twitter.com/*
// @version        1.0
// ==/UserScript==

(function() {
  var x = document.evaluate('//*[@class="entry-title entry-content"] | //div[@class="desc"]/descendant::p[1]', document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
  for (var i = 0; i < x.snapshotLength; i++) {
    var idx = x.snapshotItem(i).textContent.indexOf("L:")
    if (idx >= 0) {
      loc = x.snapshotItem(i).textContent.substr(idx + 2).split(/\s+/)[0].replace(/[\n\r\s]/g, "");
      x.snapshotItem(i).innerHTML = x.snapshotItem(i).innerHTML.replace(loc, "" + loc + "");
    }
  }
})();

 Page 1 of 2  1  2 »

ホーム > Twitter

Search
Feeds
Meta
あわせて読みたい
あわせて読みたいブログパーツ
Others...
フィードメーター - sukechan.net
track feed

Return to page top