- Timestamp:
- Oct 11, 2009, 10:17:51 PM (15 years ago)
- Branches:
- master, release-1.10, release-1.7, release-1.8, release-1.9
- Children:
- d69c37c
- Parents:
- fe184d4
- git-author:
- Nelson Elhage <nelhage@mit.edu> (09/16/09 23:03:38)
- git-committer:
- Nelson Elhage <nelhage@mit.edu> (10/11/09 22:17:51)
- Location:
- lib/BarnOwl/Module
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
lib/BarnOwl/Module/Twitter.pm
r176434d r36546fa 187 187 } 188 188 189 sub poll_messages {190 return unless @twitter_handles;191 192 my $handle = $twitter_handles[$next_service_to_poll];193 $next_service_to_poll = ($next_service_to_poll + 1) % scalar(@twitter_handles);194 195 $handle->poll_twitter() if $handle->{cfg}->{poll_for_tweets};196 $handle->poll_direct() if $handle->{cfg}->{poll_for_dms};197 }198 199 189 sub find_account { 200 190 my $name = shift; … … 322 312 } 323 313 324 eval {325 $BarnOwl::Hooks::receiveMessage->add("BarnOwl::Module::Twitter::handle_message");326 $BarnOwl::Hooks::mainLoop->add("BarnOwl::Module::Twitter::poll_messages");327 };328 if($@) {329 $BarnOwl::Hooks::receiveMessage->add(\&handle_message);330 $BarnOwl::Hooks::mainLoop->add(\&poll_messages);331 }332 333 314 BarnOwl::filter(qw{twitter type ^twitter$}); 334 315 -
lib/BarnOwl/Module/Twitter/Handle.pm
r26f9e2e r36546fa 57 57 'cfg' => $cfg, 58 58 'twitter' => undef, 59 'last_poll' => 0,60 'last_direct_poll' => 0,61 59 'last_id' => undef, 62 60 'last_direct' => undef, 61 'timer' => undef, 62 'direct_timer' => undef 63 63 }; 64 64 … … 92 92 warn "$@" if $@; 93 93 94 $self->sleep(0); 95 94 96 return $self; 95 97 } 96 98 99 =head2 sleep SECONDS 100 101 Stop polling Twitter for SECONDS seconds. 102 103 =cut 104 105 sub sleep { 106 my $self = shift; 107 my $delay = shift; 108 109 if($self->{cfg}->{poll_for_tweets}) { 110 $self->{timer} = BarnOwl::Timer->new({ 111 after => $delay, 112 interval => 60, 113 cb => sub { $self->poll_twitter } 114 }); 115 } 116 117 if($self->{cfg}->{poll_for_dms}) { 118 $self->{direct_timer} = BarnOwl::Timer->new({ 119 after => $delay, 120 interval => 120, 121 cb => sub { $self->poll_direct } 122 }); 123 } 124 } 125 97 126 sub twitter_error { 98 127 my $self = shift; … … 101 130 warn "$@" if $@; 102 131 unless(defined($ratelimit) && ref($ratelimit) eq 'HASH') { 103 # Twitter's just sucking, sleep for 5 minutes 104 $self->{last_direct_poll} = $self->{last_poll} = time + 60*5; 105 # die("Twitter seems to be having problems.\n"); 132 # Twitter's probably just sucking, try again later. 133 $self->sleep(5); 106 134 return; 107 135 } 136 108 137 if(exists($ratelimit->{remaining_hits}) 109 138 && $ratelimit->{remaining_hits} <= 0) { 110 $self-> {last_direct_poll} = $self->{last_poll} = $ratelimit->{reset_time_in_seconds};139 $self->sleep(time - $ratelimit->{reset_time_in_seconds} + 60); 111 140 die("Twitter: ratelimited until " . $ratelimit->{reset_time} . "\n"); 112 141 } elsif(exists($ratelimit->{error})) { 142 $self->sleep(60*20); 113 143 die("Twitter: ". $ratelimit->{error} . "\n"); 114 $self->{last_direct_poll} = $self->{last_poll} = time + 60*20;115 144 } 116 145 } … … 119 148 my $self = shift; 120 149 121 return unless ( time - $self->{last_poll} ) >= 60;122 $self->{last_poll} = time;123 150 return unless BarnOwl::getvar('twitter:poll') eq 'on'; 151 152 BarnOwl::debug("Polling " . $self->{cfg}->{account_nickname}); 124 153 125 154 my $timeline = eval { $self->{twitter}->friends_timeline( { since_id => $self->{last_id} } ) }; … … 172 201 my $self = shift; 173 202 174 return unless ( time - $self->{last_direct_poll}) >= 120;175 $self->{last_direct_poll} = time;176 203 return unless BarnOwl::getvar('twitter:poll') eq 'on'; 204 205 BarnOwl::debug("Polling direct for " . $self->{cfg}->{account_nickname}); 177 206 178 207 my $direct = eval { $self->{twitter}->direct_messages( { since_id => $self->{last_direct} } ) };
Note: See TracChangeset
for help on using the changeset viewer.