M.C.P.C.

―むり・くり―プラスコミュニケーション(更新終了)


| トップページ |

2010年5月 1日 16:03

Twitterのフォロワーの活性をコンソールにグラフ化する

このエントリーをはてなブックマークに追加 mixiチェック

Twitterの特定のアカウントのフォロワー達の最終書き込み日をグラフにして表示すればなんか見えてくるかなーて思って作ってみたが大して面白くなかった。

Filename: followers_activities.pl

#!/usr/bin/perl
 
use strict;
use warnings;
use YAML::XS;
use Net::Twitter;
use Date::Parse;
use DateTime;
use Text::Graph;
use Text::Graph::DataSet;
 
my $screen_name =  $ARGV[0] or die 'enter Twitter UserName.';
my $nt = Net::Twitter->new( traits => [qw/API::REST/],);
 
my $now = DateTime->now( time_zone => 'Asia/Tokyo');
my $c = [
  { count => 0, name => '1day',  range => $now->clone->add( days   => -1 ), },
  { count => 0, name => '1week', range => $now->clone->add( weeks  => -1 ), },
  { count => 0, name => '1month',range => $now->clone->add( months => -1 ), },
  { count => 0, name => '1year', range => $now->clone->add( years  => -1 ), },
  { count => 0, name => 'other', range => DateTime->from_epoch( epoch=> 0), },
];
 
# TwitterからFollowersの情報を取得して最終発言日を集計
my @list = _get_twitter_value( $screen_name );
foreach my $item ( @list ) {
  my $epoch = str2time( $item->{status}->{created_at} ) || 1;
  my $create_at = DateTime->from_epoch(
       epoch     => $epoch,
       time_zone => 'Asia/Tokyo',
  );
  #print "$create_at\n";
  for ( my $i = 0; $i < $#$c + 1; $i++ ) {
    if ( $c->[$i]->{range} < $create_at) {
      $c->[$i]->{count}++; last;
    }
  }
}
 
# グラフ表示
my @counts = map { $_->{count} } @$c;
my @labels = map { $_->{name}  } @$c;
 
my $graph = Text::Graph->new( 'Bar', showval => 1, maxlen => 60,);
print $graph->to_string( \@counts, labels =>\@labels,);
 
exit;
 
sub _get_twitter_value {
  my $screen_name = shift;
  my $cursor = -1;
  my @list;
  while ( $cursor != 0 ) {
    my $res = $nt->friends({
      screen_name => $screen_name,
      cursor      => $cursor,
    });
    $cursor = $res->{next_cursor};
    push @list, @{ $res->{users} };
  }
  return @list;
}
 
__END__

実行例。CLCLCLというのは、わっとこのTwitter Usernameです。

$ ./followers_activities.pl CLCLCL
1day   :**************************************************  (126)
1week  :********                                            (23)
1month :                                                    (7)
1year  :**                                                  (11)
other  :*                                                   (8)
$

Perl 5.12だと$#が使えなくなるとかどうとか聞いたけどどうするんだろ。確認してないけど。

投稿 大野 義貴 [Web] | |

トラックバック(0)

トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/3208

コメントする