X-Git-Url: http://lab.mitty.jp/git/?a=blobdiff_plain;f=Dev%2Ftwitter%2Fdump_timeline.pl;h=4e2db3ce3ac3021a7a02fc4ad3b72ed7058cfbfd;hb=HEAD;hp=72f7881922ea47c671ed33f04226230157a5cd04;hpb=2b6eb0b7517775323e7bdd12100407ff63d1787c;p=lab.git diff --git a/Dev/twitter/dump_timeline.pl b/Dev/twitter/dump_timeline.pl index 72f7881..4e2db3c 100755 --- a/Dev/twitter/dump_timeline.pl +++ b/Dev/twitter/dump_timeline.pl @@ -9,7 +9,7 @@ use utf8; # it throws a Net::Twitter::Lite::Error object. # You can catch and process these exceptions by using eval blocks and testing $@ ## from http://search.cpan.org/perldoc?Net::Twitter::Lite#ERROR_HANDLING -use Net::Twitter::Lite; +use Net::Twitter::Lite::WithAPIv1_1; use FindBin qw($Bin); use YAML::Tiny; use Data::Dumper; @@ -18,7 +18,7 @@ use Encode; my $help = sub { die <authorized) { eval { my $page = 0; - while ($pages - $page && $page <= 160) { + while ($pages - $page && $page <= 20) { $page++; my $param = ($screen_name) - ? { page => $page, screen_name => $screen_name, } - : { page => $page, } + ? { page => $page, screen_name => $screen_name, count => 200, } + : { page => $page, count => 200, } ; my $res; if ($method eq 'user_timeline' || $method eq 'u') { $res = $bot->user_timeline($param); } - elsif ($method eq 'retweeted_by_me' || $method eq 'r') { - $res = $bot->retweeted_by_me($param); - } elsif ($method eq 'mentions' || $method eq 'm') { $res = $bot->mentions($param); } + elsif ($method eq 'search' || $method eq 's') { + my $key; + foreach my $word (@{ $conf->{hashtag} }) { + if ($key) { + $key .= " OR $word"; + } + else { + $key = $word; + } + } + $param->{q} = $key; + $res = $bot->search($param)->{results}; + } else { warn "$0: unknown method '$method'"; &{$help}; @@ -85,8 +95,11 @@ eval { foreach my $status (@{$res}) { my $text = ""; $text .= "(". $status->{id} . ") "; - $text .= $status->{user}{screen_name} . "|"; - $text .= $status->{user}{name}; + $text .= ($status->{user}{screen_name}) ? + $status->{user}{screen_name} : $status->{from_user}; + $text .= "|"; + $text .= ($status->{user}{name}) ? + $status->{user}{name} : $status->{from_user_name}; $text .= " [" . $status->{created_at} . "]"; $text .= " ". $status->{text}; $text =~ s/\n//; @@ -117,15 +130,17 @@ sub loadconf { } sub login { - # make Net::Twitter::Lite object and login + # make Net::Twitter::Lite::WithAPIv1_1 object and login # param => hash object of configration - # ret => Net::Twitter::Lite object + # ret => Net::Twitter::Lite::WithAPIv1_1 object my $conf = shift @_; - my $bot = Net::Twitter::Lite->new( + my $bot = Net::Twitter::Lite::WithAPIv1_1->new( consumer_key => $conf->{consumer_key}, consumer_secret => $conf->{consumer_secret}, + legacy_lists_api => 0, + ssl => 1, ); $bot->access_token($conf->{access_token}); @@ -142,12 +157,18 @@ sub evalrescue { if (blessed $@ && $@->isa('Net::Twitter::Lite::Error')) { warn $@->error; if ($@->twitter_error) { - my %twitter_error = %{$@->twitter_error}; - map { - $twitter_error{"$_ => "} = $twitter_error{$_} . "\n"; - delete $twitter_error{$_} - } keys %twitter_error; - warn join("", %twitter_error); + my $twitter_error = $@->twitter_error; + if (defined $twitter_error->{errors}) { + foreach my $error (@{$twitter_error->{errors}}) { + warn "code => " , $error->{code}, "\n"; + warn "message => ", $error->{message}, "\n"; + } + } + else { + # unknown HASH structure + use Data::Dumper; + warn Dumper $twitter_error; + } } } else {