m_shige1979のときどきITブログ

プログラムの勉強をしながら学習したことや経験したことをぼそぼそと書いていきます

Github(変なおっさんの顔でるので気をつけてね)

https://github.com/mshige1979

perlでAnyEvent::Twitter::Streamを使用して取得

AnyEvent::Twitter::Stream

sample.pl
#/usr/bin/env perl

use strict;
use warnings;
use AnyEvent::Twitter::Stream;
use utf8;
use Data::Dumper;
use Time::Local;

binmode STDOUT, ":utf8";

my $consumer_key = "consumer_key";
my $consumer_secret = "consumer_secret";
my $access_token = "access_token";
my $access_token_secret = "access_token_secret";


sub timestamp2date {
    my $timestamp = shift;
    my ($sec, $min, $hour, $day, $mon, $year) = localtime($timestamp / 1000);
    return sprintf('%04d-%02d-%02d %02d:%02d:%02d', $year + 1900, $mon + 1, $day, $hour, $min, $sec);
}

my $done = AE::cv;

my $listener = AnyEvent::Twitter::Stream->new(
    consumer_key    => $consumer_key,
    consumer_secret => $consumer_secret,
    token           => $access_token,
    token_secret    => $access_token_secret,
    method   => 'filter',
    track    => "おはよう",
    on_tweet => sub {
        my $tweet = shift;
        my $_text = $tweet->{text};
        my $_lang = $tweet->{lang};

        # 改行除去
        $_text =~ s/(\r\n|\n\r|\n|\r)//g;

        # タイムスタンプを変換
        my $tm = $tweet->{timestamp_ms};
        my $date = timestamp2date($tm);
        print "$date $tweet->{user}->{name} $_text " . "\n";

    },
);

$done->recv;

2014-11-22 08:27:59 いつきんぐ @lhp134 おはよう 
2014-11-22 08:28:02 @nanda_gomi_life おはよう 171 
2014-11-22 08:28:02 おちゃ子 休日の朝はダメだな / おはよう http://t.co/MS33ZzWlyV 
2014-11-22 08:28:04 南 千秋 @rorigeta_501JFW おはよう ロリげた@アイコン変えた 二度寝は気持ちいいけど…起きような? 
2014-11-22 08:28:05 あ おはよ!つかれたおはよう疲れたただいまおやすみおやすー眠い起きるこんばんはこんにちはこんにちわさようなら死ぬ辛いむかつく楽しい嬉しい腹立つお腹すいた離脱ほかる風呂つらい6d060326 
2014-11-22 08:28:06 有頂天風霊夢bot @IBUKll おはよう おちゃ子。今日もいい日になるといいわね 
2014-11-22 08:28:06 あああ遊ぶなら博多人妻専科 人妻デリヘル こんにちは 
2014-11-22 08:28:08 一般人 おはよう 
2014-11-22 08:28:09 Be @culumiruku おはよう 
2014-11-22 08:28:10 スペースくん@お酒奢って @whatman_ おはよう 
2014-11-22 08:28:10 ☣ジョージ @moroegle おはよう 

こんな感じ

なんかちょっと違うかも?

searchで検索した結果と時間差や取得しているデータに差があるのでapiそのものに問題があるかもしれないので実際に使用するのは見送る感じになりそう…