読者です 読者をやめる 読者になる 読者になる

リハビリ

Perl

emacsでperl書く環境もやっと整ってきたことだし、リハビリがてらにコードを書いてみる。お題はtwitter関係の。

ここのrubyのコードをほぼぱくってみますた。

で、followersがあんまり多いと時間がやたらかかるので@onoue50のやつを調べてみた。@ma_shimaroをfollowするんだ、@onoue50!!

結果とコードはこんな感じ。

ma_shimaro is 5
negaton is 4
muzie is 4
VoQn is 4
ryo_grid is 4
Hamachiya2 is 4
takesako is 3
otsune is 3
_tad_ is 3
pianocktail is 3
ONa is 3
mrkn is 3
redribabarn is 3
kmizu is 3
daftbeats is 3
f_iryo1 is 3
yanbe is 3
#!/usr/bin/perl

use strict;
use warnings;

use XML::LibXML;
use Data::Dumper;
use LWP::Simple;

sub getFollowers() {
    my $username = shift;
    my $path     = "/home/yasuhisa/svn/public/perl/friends";
    my $file     = "$path/$username.xml";
    unless ( -e $file ) {
        my $content = get("http://twitter.com/statuses/friends/$username.xml");
        open( FILE, "> $file" ) or die $!;
        print FILE $content;
        close(FILE);
    }

    my $parser = XML::LibXML->new;
    my $dom = $parser->parse_file($file) or die;

    my @names   = $dom->getElementsByTagName("screen_name");
    my @friends = ();
    foreach (@names) {
        push( @friends, $_->firstChild->data );
    }
    return @friends;
}

my $user = "onoue50";

my %hash;
my @friends = &getFollowers($user);
foreach my $friend (@friends) {
    my @of = &getFollowers($friend);
    foreach my $elem (@of) {
        $hash{$elem} += 1;
    }
}

foreach(@friends){
  delete($hash{$_});
}

delete($hash{$user});

foreach(sort {$hash{$b} cmp $hash{$a}} keys %hash){
  print "$_ is $hash{$_}\n" if $hash{$_} >3;
}