AnyEvent::Twitter::Stream - Receive Twitter streaming API in an event loop
use AnyEvent::Twitter::Stream;
my $done = AE::cv;
# receive updates from @following_ids
my $listener = AnyEvent::Twitter::Stream->new(
username => $user,
password => $password,
method => "filter", # "firehose" for everything, "sample" for sample timeline
follow => join(",", @following_ids), # numeric IDs
on_tweet => sub {
my $tweet = shift;
warn "$tweet->{user}{screen_name}: $tweet->{text}\n";
},
on_keepalive => sub {
warn "ping\n";
},
on_delete => sub {
my ($tweet_id, $user_id) = @_; # callback executed when twitter send a delete notification
...
},
timeout => 45,
);
# track keywords
my $guard = AnyEvent::Twitter::Stream->new(
username => $user,
password => $password,
method => "filter",
track => "Perl,Test,Music",
on_tweet => sub { },
);
# to use OAuth authentication
my $listener = AnyEvent::Twitter::Stream->new(
consumer_key => $consumer_key,
consumer_secret => $consumer_secret,
token => $token,
token_secret => $token_secret,
method => "filter",
track => "...",
on_tweet => sub { ... },
);
$done->recv;
AnyEvent::Twitter::Stream is an AnyEvent user to receive Twitter streaming API,
available at <http://dev.twitter.com/pages/streaming_api> and
<http://dev.twitter.com/pages/user_streams>.
See "track.pl" in eg for more client code example.
- username password
- These arguments are used for basic authentication.
- consumer_key consumer_secret token
token_secret
- If you want to use the OAuth authentication mechanism, you need to set
these arguments
- method
- The name of the method you want to use on the stream. Currently, any one
of :
- firehose
- sample
- userstream
- To use this method, you need to use the OAuth mechanism.
- filter
- With this method you can specify what you want to filter amongst
track, follow and locations.
See
<https://dev.twitter.com/docs/api/1.1/post/statuses/filter> for
the details of the parameters.
- api_url
- Pass this to override the default URL for the API endpoint.
- request_method
- Pass this to override the default HTTP request method.
- timeout
- Set the timeout value.
- on_connect
- Callback to execute when a stream is connected.
- on_tweet
- Callback to execute when a new tweet is received. The argument is the
tweet, a hashref documented at
<https://dev.twitter.com/docs/api/1/get/statuses/show/%3Aid>.
- on_error
- on_eof
- on_keepalive
- on_delete
- Callback to execute when the stream send a delete notification.
- on_friends
- Only with the usertream method. Callback to execute when the stream
send a list of friends.
- on_direct_message
- Only with the usertream method. Callback to execute when a direct
message is received in the stream.
- on_event
- Only with the userstream method. Callback to execute when the
stream send an event notification (follow, ...).
- additional agruments
- Any additional arguments are assumed to be parameters to the underlying
API method and are passed to Twitter.
To use the userstream method, Twitter recommend using the HTTPS protocol.
For this, you need to set the ANYEVENT_TWITTER_STREAM_SSL environment
variable, and install the Net::SSLeay module.
Tatsuhiko Miyagawa <miyagawa@bulknews.net>
This library is free software; you can redistribute it and/or modify it under
the same terms as Perl itself.
AnyEvent::Twitter, Net::Twitter::Stream