たつをの ChangeLog : 2010-06-09

ツイッターの streaming API で流れてくるつぶやきをカウントするプログラムです。
目的が達成できればよいというだけの ad hoc なプログラム。

コード (twistat.pl):
#!/usr/bin/perl
use strict;
use warnings;
use Encode;
use Time::Local;
use POSIX qw(strftime);

$ENV{'TZ'} = "JST-9";

my $idx = 0;
my @month = ('Jan','Feb','Mar','Apr','May','Jun',
     'Jul','Aug','Sep','Oct','Nov','Dec');
my %m2i = map {$_ => $idx++} @month;

my $count;
my $sum_byte;
my $sum_char;
my $sum_json;
my %hourly;
while (<>) {
    my $line = $_;
    s/^\{(.*)\}/$1/;
    while (s/:\{[^\}]+\}/:<>/g) {}
    my ($text) = /"text":"(.+?)"/;
    next unless $text;
    my ($tm) = /"created_at":"(.+?)"/;
    next unless $tm =~ /([A-Z][a-z]{2}) (\d+) (\d+):(\d+):(\d+) .\d+ (\d+)$/;
    my $utm = timegm($5, $4, $3, $2, $m2i{$1}, $6);

    $text =~ s/\\u([0-9A-Z]{4})/chr(hex($1))/gei;
    $sum_byte += length(encode('utf8', $text));
    $sum_char += length($text);
    $sum_json += length($line);
    $hourly{strftime("%Y%m%d%H", localtime($utm))}++;
    $count++;
}

print "ave bytes : ", $sum_byte / $count, "\n";
print "ave chars : ", $sum_char / $count, "\n";
print "ave jsons : ", $sum_json / $count, "\n";

foreach my $i (sort keys %hourly) {
    print "$i $hourly{$i}\n";
}

一言いわせてもらうと、「JSON.pm 遅すぎ!」。
というわけでこのプログラムでは正規表現に書き換えました。

使い方 (zsh):
curl -uID:PW http://stream.twitter.com/1/statuses/sample.json | gzip -c > tw.gz
zcat tw.gz | grep '"lang":"ja"' | ./twistat.pl 2> error.log

curl はたぶん永遠にデータを取ってくるので Ctrl+C などで適当に止めます。

カウントの結果:
sample.json だと1時間10万ツイートくらい。
"lang":"ja" でフィルタリングするとその5分の1くらい。

ref.
- Twitter のストリーミング API を試す[2010-04-15-2]
- Twitter API プログラミング[2010-04-21-2]
- GMT による時間表現文字列を JST に変換する Perl コード片[2010-03-01-5]
- Twitterの月間訪問者は1億9千万、ツイートは毎日6500万-Costolo COO語る
http://jp.techcrunch.com/archives/20100608an-android-users-take-on-yesterdays-iphone-news/

辻村浩 / Twitter API プログラミング

(ref. [2010-04-21-2])

恵比寿のITエンジニアの飲み会、8回目です。
今回の幹事は、としのりくん(@overlast)。

会場は、恵比寿西のピーコックの近くの馬肉のお店「馬喰ろう(ばくろう)」[2008-05-13-1]

馬喰ろう 恵比寿

ニッポン馬肉道場 馬喰ろう 恵比寿
http://r.tabelog.com/tokyo/A1310/A131002/13039839/
http://r.gnavi.co.jp/b814501/
電話:03-5459-8348
営業時間:18:00〜04:00(月〜金)、18:00〜23:30(土)
場所:東京都渋谷区恵比寿西1-7-12

今回の参加人数は7名。
@t2y @nipotan @overlast @tokuhirom @kazuho @yto @akiyan
いつものありがちなメンバーになって淀んでしまうところを初参加の @t2y がさっそうと登場。フレッシュ!
彼のブログ:
- forest book
http://d.hatena.ne.jp/t2y-1979/

以下、食べたものの写真。

馬刺もりあわせ、
馬肉ソーセージとか焼いたやつ、
馬肉の唐揚げ。
馬喰ろう 恵比寿 馬喰ろう 恵比寿 馬喰ろう 恵比寿

桜鍋(馬肉鍋)です。〆はうどんです。
馬喰ろう 恵比寿 馬喰ろう 恵比寿

photos by :

Canon デジタル一眼レフカメラ EOS Kiss X2


Canon EFレンズ 35mm F2


恵比寿ITエンジニア飲み会の歴史


- 第0回 ぼった屋さん [2007-11-18-4]
- 第1回 中国茶房8 恵比寿店 [2008-01-11-1]
- 第2回 ZEST [2008-03-14-3]
- 第3回 ビヤステーション [2008-04-23-1]
- 第4回 広東料理「海栄」[2008-07-30-2]
- 第5回 沖縄料理「ラ・ティーダ」[2008-12-05-2]
- 第6回 恵比寿餃子 大豊記 恵比寿弐號房 [2009-01-27-1]
- 第7回 唐子炉(CALAKORO) [2009-05-28-3]

たつをの ChangeLog
Powered by chalow