Changeset 1233
- Timestamp:
- 11/08/07 15:05:16 (6 years ago)
- Location:
- lang/perl/Net-Twitter-FriendFinder/trunk
- Files:
-
- 2 modified
-
Changes (modified) (1 diff)
-
lib/Net/Twitter/FriendFinder.pm (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
lang/perl/Net-Twitter-FriendFinder/trunk/Changes
r1219 r1233 1 1 Revision history for Net-Twitter-FriendFinder 2 2 3 0.01_03 2007-11-08/15:04 4 - filter_already_followers support. it can be reduced API request. 5 for this fix you must set username and passowrd at new() parameters 6 - support sleep setting. 3 7 0.01_02 2007-11-08/00:21 4 8 - Bug Fix: can not load custom resource module. -
lang/perl/Net-Twitter-FriendFinder/trunk/lib/Net/Twitter/FriendFinder.pm
r1219 r1233 5 5 use UNIVERSAL::require; 6 6 use base qw/Class::Accessor::Fast/; 7 __PACKAGE__->mk_accessors(qw/default from setting ids scores resources /);7 __PACKAGE__->mk_accessors(qw/default from setting ids scores resources filters)/); 8 8 use Text::SimpleTable; 9 9 use Net::Twitter; 10 10 11 our $VERSION = '0.01_02'; 11 our $VERSION = '0.01_03'; 12 13 # Net::Twitter HACK. I know this is not good way to do this. 14 # REASON: Net::Twitter->following only allow to retrive 100 limit. 15 sub Net::Twitter::following_screen_names { 16 my ( $self ) = @_; 17 18 my @screen_names = (); 19 # limit 20 pages for now.( 2000 twitters ) 20 my @pages = (1..20); 21 for my $page ( @pages ) { 22 my $url = $self->{apiurl} . "/statuses/friends.json?page=$page" ; 23 my $req = $self->{ua}->get($url); 24 my $res = JSON::Any->jsonToObj($req->content) ; 25 26 last unless scalar @{ $res } ; 27 28 for my $item ( @{ $res } ) { 29 push @screen_names , $item->{screen_name}; 30 } 31 } 32 33 return \@screen_names; 34 35 } 12 36 13 37 sub search { … … 39 63 } 40 64 65 if( $self->{setting}{filter_already_followers} ) { 66 my $twitter = Net::Twitter->new( username=> $self->{setting}{username} , password => $self->{setting}{password} ); 67 my $screen_names = $twitter->following_screen_names(); 68 my @filters = (); 69 70 for my $screen_name ( @{ $screen_names } ) { 71 if( defined $data->{ $screen_name } ) { 72 push @filters , { id => $screen_name , score => $data->{ $screen_name } }; 73 delete $data->{ $screen_name }; 74 } 75 } 76 $self->{filters} = \@filters; 77 78 } 79 41 80 my @ids = sort { $data->{ $a } <=> $data->{ $b } } keys %{ $data }; 42 81 … … 82 121 print $t3->draw; 83 122 123 if( scalar @{ $self->{filters} } ) { 124 my $t4 = Text::SimpleTable->new( 44 ); 125 $t4->row( 'Filter Users' ); 126 print $t4->draw; 127 128 my $t5= Text::SimpleTable->new( 3, 20, 15 ); 129 my $cnt = 1; 130 for my $filter ( @{ $self->{filters} } ) { 131 $t5->row( $cnt , $filter->{id} , $filter->{score} ); 132 $cnt++; 133 } 134 print $t5->draw; 135 } 84 136 85 137 } 86 138 87 139 sub follow { 140 use Data::Dumper; 88 141 my $self = shift; 89 my $username = shift; 90 my $password= shift; 91 my $twit = Net::Twitter->new( username=>$username ,password=> $password); 142 my $twit = Net::Twitter->new( username=>$self->{setting}{username} ,password=> $self->{setting}{password}); 92 143 foreach my $id ( @{ $self->{ids} } ) { 93 144 my $result = $twit->follow( $id ); 94 print "follow $id \n" if $self->{setting}{on_echo}; 145 sleep( $self->{setting}{sleep} ) if defined $self->{setting}{sleep}; 146 147 my $res = defined $result ? 'ok' : 'fail'; 148 print "follow $id [$res]\n" if $self->{setting}{on_echo}; 95 149 } 96 150 } … … 120 174 limit => 20, 121 175 on_echo=> 1, 176 username => '****', 177 password => '****', 178 filter_already_followers => 1, 179 sleep => 60, 122 180 }, 123 181 default => { … … 133 191 $tf->search( $keyword ); 134 192 $tf->show(); 135 $tf->follow( { username => '****' , password=> '******' });193 $tf->follow(); 136 194 137 195 =head1 MODULE … … 147 205 148 206 on_echo - when on_echo = 1 then , $tf->follow() method print out who you are going to follow. 207 208 username - twitter username 209 210 password - twitter password 211 212 sleep - since Twitter API has request count limitation, you may want to set sleep time when you try to follow a lot of people. 213 214 filter_already_followers - when true, it will check your current followers and not try to follow again. required username and password for this. NOTICE: you may miss some friends to filter who add recently because Twitter API does not return them. 149 215 150 216 ** default … … 182 248 follow people you find. I recommend that before calling this module , you 183 249 should check who you are going t follow with show() method. 184 185 you must set your twitter username and passsword .186 187 $tf->follow( { username => '*****' , password => '*****' });188 250 189 251 =head1 HOW TO MAKE YOUR OWN RESOURCE
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)