Created
April 21, 2013 08:44
-
-
Save shohey1226/5428937 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/env perl | |
use strict; | |
use warnings; | |
use AnyEvent::Twitter::Stream; | |
use EV; | |
use utf8; | |
use YAML; | |
use FindBin qw($Bin); | |
use Data::Dumper; | |
use LWP::UserAgent; | |
binmode STDOUT => ':utf8'; | |
my $keys = YAML::LoadFile ("$Bin/../etc/config.yml"); | |
my $cv = AnyEvent->condvar(); | |
my $listener_twitter; | |
my $listener_timer; | |
my $set_twitter; | |
my $set_timer; | |
$set_twitter = sub { | |
$listener_twitter = AnyEvent::Twitter::Stream->new( | |
consumer_key => $keys->{consumer_key}, | |
consumer_secret => $keys->{consumer_secret}, | |
token => $keys->{access_token}, | |
token_secret => $keys->{access_token_secret}, | |
method => 'userstream', | |
on_tweet => sub { | |
my $tweet = shift; | |
if (defined $tweet->{user}){ | |
#print Dumper $tweet; | |
print $tweet->{created_at}, $tweet->{user}->{id}, $tweet->{user}->{screen_name}, $tweet->{text}, "\n"; | |
for my $url (@{ $tweet->{entities}->{urls} }){ | |
#print Dumper $url; | |
print expand_uri($url->{url}), "\n"; | |
} | |
} | |
}, | |
on_error => sub { # try to reconnect | |
my $error = shift; | |
warn "ERROR: $error"; | |
undef $listener_twitter; | |
$set_timer->(5); | |
}, | |
on_eof => sub { | |
}, | |
); | |
}; | |
$set_timer = sub { | |
my $after = shift || 0; | |
$listener_timer = AnyEvent->timer( | |
after => $after, | |
cb => sub { | |
unless ( $listener_twitter ) { | |
print "(re)connecting\n"; | |
undef $listener_timer; | |
$set_twitter->(); | |
} | |
}, | |
); | |
}; | |
$set_timer->(); | |
$cv->recv; | |
exit; | |
# got from 404 Blong not found :) | |
sub expand_uri{ | |
my $uri = shift; | |
my $ua = LWP::UserAgent->new; | |
my $res = $ua->head($uri); | |
warn $res->status_line unless $res->is_success; | |
return $res->request->uri; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment