Skip to content

Instantly share code, notes, and snippets.

@walkure
Created April 6, 2012 02:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save walkure/2315992 to your computer and use it in GitHub Desktop.
Save walkure/2315992 to your computer and use it in GitHub Desktop.
automatic niseho(にせほー) poster(AnyEvent ver.)
#!/usr/bin/env perl
use strict;
use warnings;
use AnyEvent::Twitter;
use AnyEvent::Twitter::Stream;
use Encode;
use Date::Parse;
my $done = AnyEvent->condvar;
my %account = (
consumer_key => '<CONSUMER KEY>',
consumer_secret => '<CONSUMER SECRET>',
token => '<ACCESS TOKEN>',
token_secret => '<ACCESS SECRET>',
);
my $charset = 'euc-jp';
my $niseho = 'にせほー';
#nisehorns
my @nisehorn_id = (
96348838, #nisehorn
96560355, #nisehorrn
229752118,#nisehorrrn
229754624,#nisehorrrrn
295206903,#nisehorrrrrn
295216106,#nisehorrrrrrn
295218654,#nisehorrrrrrrn
);
#unbuffered
$| = 1;
my $sender = AnyEvent::Twitter->new(
%account,
);
my $listener = AnyEvent::Twitter::Stream->new(
%account,
method => 'filter',
follow => join(',',@nisehorn_id),
on_connect => sub {
print "++Connect to Twitter\n";
},
on_keepalive => sub{
print '.';
},
on_tweet => \&do_tweet,
on_error => sub {
my $err = shift;
warn "\n--ERR:$err\n";
$done->send;
},
);
$done->recv;
exit;
sub do_tweet
{
my $tweet = shift;
return unless defined $tweet->{text};
foreach my $id(@nisehorn_id){
next if($id ne $tweet->{user}{id_str});
my $msg = encode($charset,$tweet->{text});
my $name = encode($charset,$tweet->{user}{name});
my $t = str2time($tweet->{created_at});
my $time = (defined $t) ? scalar localtime($t) : $tweet->{created_at};
if($msg =~ /^@/){
print '@';
last;
}
print "\n[($tweet->{user}{screen_name})($tweet->{user}{id_str})$name]<$time>[$msg]\n";
if($msg =~ /^$niseho/){
$sender->post('statuses/update',{
status => decode($charset,"\@$tweet->{user}{screen_name} $niseho"),
in_reply_to_status_id => $tweet->{id_str},
},sub {
my ($header, $response, $reason) = @_;
if ($response) {
print "++Send Niseho\n";
}else{
print "--Cannot Niseho[$reason]\n";
}
}
);
}
last;
}
}
@walkure
Copy link
Author

walkure commented Apr 6, 2012

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment