- Timestamp:
- 11/18/07 07:51:04 (6 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
lang/perl/Net-Twitter-FriendFinder/tags/0.03/lib/Net/Twitter/FriendFinder.pm
r1737 r1738 5 5 use UNIVERSAL::require; 6 6 use base qw/Class::Accessor::Fast/; 7 __PACKAGE__->mk_accessors(qw/default from setting ids scores resources filters )/);7 __PACKAGE__->mk_accessors(qw/default from setting ids scores resources filters mask/); 8 8 use Text::SimpleTable; 9 use Net::Twitter; 10 11 our $VERSION = '0.01_06'; 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_ref { 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 25 die 'fail to connect to twitter. maybe over Rate limit exceeded' unless $req->is_success; 26 my $res = JSON::Any->jsonToObj($req->content) ; 27 28 last unless scalar @{ $res } ; 29 30 for my $item ( @{ $res } ) { 31 push @screen_names , $item->{screen_name}; 32 } 33 } 34 35 return \@screen_names; 36 37 } 9 use Net::Twitter::Diff; 10 11 our $VERSION = '0.03'; 12 38 13 39 14 sub search { 40 15 my $self = shift; 41 my $keyword = shift || 'twitter';16 my $keyword = shift; 42 17 43 18 $self->{keyword} = $keyword; … … 68 43 69 44 if( $self->{setting}{filter_already_followers} ) { 70 my $twitter = Net::Twitter->new( username=> $self->{setting}{username} , password => $self->{setting}{password} ); 71 my $screen_names = $twitter->following_screen_names_ref(); 45 my $twitter = Net::Twitter::Diff->new( username=> $self->{setting}{username} , password => $self->{setting}{password} ); 46 my $xfollowing = $twitter->xfollowing; 47 72 48 my @filters = (); 73 49 74 for my $screen_name ( @{ $screen_names } ) { 50 for my $item ( @{ $xfollowing } ) { 51 my $screen_name = $item->{screen_name} ; 75 52 if( defined $data->{ $screen_name } ) { 76 53 push @filters , { id => $screen_name , score => $data->{ $screen_name } }; … … 80 57 $self->{filters} = \@filters; 81 58 59 } 60 if( defined $self->{setting}{username} ) { 61 delete $data->{ $self->{setting}{username} } if defined $data->{ $self->{setting}{username} }; 62 } 63 for my $screen_name ( @{ $self->{mask} } ) { 64 delete $data->{ $screen_name } if defined $data->{ $screen_name }; 82 65 } 83 66 … … 162 145 =head1 DESCRIPTION 163 146 164 Hello. I started twitter but I did not have much friends , since I am shay, so that I created this147 Hello. I started twitter but I did not have much friends. Since I am shay, so that I created this 165 148 module. 166 149 167 You can find twitter friends by using keyword search, of course you can follow friends whith this module. 168 169 INTERFACE MAY CHANGE IN THE FUTURE. STILL UNDER DEVELOPMENT. 150 You can find twitter friends by using keyword search and then you can follow friends with this module. 170 151 171 152 =head1 SYNOPSYS … … 194 175 }); 195 176 177 # mask who you do not want to find. 178 $tf->mask([qw/xxx yyy zzz/]); 196 179 $tf->search( $keyword ); 197 180 $tf->show(); 198 181 $tf->follow(); 199 182 183 #print Dumepr $twf->ids(); 184 #print Dumepr $twf->filters(); 185 186 200 187 =head1 MODULE 201 188 … … 204 191 You should set configulation here. 205 192 206 ** setting 207 208 209 limit - you can set limit for how many friends you want to find for max. 210 211 on_echo - when on_echo = 1 then , $tf->follow() method print out who you are going to follow. 212 213 username - twitter username 214 215 password - twitter password 216 217 sleep - since Twitter API has request count limitation, you may want to set sleep time when you try to follow a lot of people. 193 =over 2 194 195 =item B<setting> 196 197 =back 198 199 =over 4 200 201 =item ->{limit} 202 203 you can set limit for how many friends you want to find for max. 204 205 =item ->{on_echo} 206 207 when on_echo = 1 then , $tf->follow() method print out who you are going to follow. 208 209 =item ->{username} 210 211 twitter username 212 213 =item ->{password} 214 215 twitter password 216 217 =item ->{sleep} 218 219 since Twitter API has request count limitation, you may want to set sleep time when you try to follow a lot of people. 218 220 219 221 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. 220 222 221 ** default 223 =back 224 225 =over 2 226 227 =item B<default> 222 228 223 229 you can set default setting here. 224 230 225 coverage - you can set how much you cover. It depend on where you get resource from , so check the resource POD. 226 227 ** from 231 =back 232 233 =over 4 234 235 236 =item ->{coverage} 237 238 you can set how much you cover. It depend on where you get resource from , so check the resource POD. 239 240 =back 241 242 =over 2 243 244 =item B<from> 228 245 229 246 You can set where to search friends from. you can find resource from Net::Twitter::FriendFinder::From::* … … 241 258 }, 242 259 260 =back 261 243 262 =head2 search 244 263 245 this seach method try to search your friends.264 this seach method try to search your friends. 246 265 247 266 =head2 show … … 254 273 should check who you are going t follow with show() method. 255 274 256 =head1 HOW TO MAKE YOUR OWN RESOURCE257 258 this is just simple one.275 =head1 HOW TO MAKE YOUR OWN RESOURCE 276 277 this is just simple one. 259 278 260 279 package My::Recomend::User; … … 286 305 $tw->follow(); 287 306 307 =head2 mask 308 309 you can set screen_names in array ref who you want to avoid search. 310 311 $twf->mask([qw/xxx yyy zzz/]); 312 313 =head2 ids 314 315 get screen_names 316 317 =head2 filters 318 319 get filterd screen_names 320 288 321 =head1 SEE ALSO 289 322 290 L:<Net::Twitter> 291 292 L:<Net::Twitter::FriendFinder::From::Google> 293 294 L:<Net::Twitter::FriendFinder::From::Twitter> 295 296 L:<Net::Twitter::FriendFinder::From::TwitterKensaku> 297 298 L:<Net::Twitter::FriendFinder::From::TwitterDiff> 299 300 L:<Net::Twitter::FriendFinder::From::URL> 323 L<Net::Twitter> 324 325 L<Net::Twitter::From> 326 327 L<Net::Twitter::FriendFinder::From::Google> 328 329 L<Net::Twitter::FriendFinder::From::Twitter> 330 331 L<Net::Twitter::FriendFinder::From::TwitterKensaku> 332 333 L<Net::Twitter::FriendFinder::From::TwitterDiff> 334 335 L<Net::Twitter::FriendFinder::From::URL> 301 336 302 337 =head1 AUTHOR
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)