#!/usr/bin/perl use warnings; use XML::Simple; use LW2; use Getopt::Std; my %opts; getopts('q:',\%opts); my $query = $opts{q} if defined $opts{q}; $query = "SELECT pic_big FROM user WHERE uid=6666666" unless defined $opts{q}; my $ref = fqlQuery($query); foreach my $parent (sort keys %{$ref}) { if (%{$ref->{$parent}}) { print "$parent: \n"; foreach my $key (sort keys %{$ref->{$parent}}) { if (%{$ref->{$parent}->{$key}}) { print "\t$key : \n"; foreach my $mojo (sort keys %{$ref->{$parent}->{$key}}) { print "\t\t$mojo : "; print $ref->{$parent}->{$key}->{$mojo}; print "\n"; } } else { print "\t$key : "; print $ref->{$parent}->{$key}; print "\n"; } } } else { print "$parent : " . $ref->{$parent} . "\n"; } } sub fqlQuery { my $q = shift; $q =~ s/ /%20/g; my $link = "http://api.facebook.com/method/fql.query?query=$q"; my $text = download($link,"api.facebook.com"); my $ref = XMLin($text); return($ref); } sub download { my $uri = shift; my $try = 5; my $host = shift; my %request; my %response; LW2::http_init_request(\%request); $request{'whisker'}->{'method'} = "GET"; $request{'whisker'}->{'host'} = $host; $request{'whisker'}->{'uri'} = $uri; $request{'whisker'}->{'encode_anti_ids'} = 9; $request{'whisker'}->{'user-agent'} = ""; LW2::http_fixup_request(\%request); if(LW2::http_do_request(\%request, \%response)) { if($try < 5) { print "Failed to fetch $uri on try $try. Retrying...\n"; return undef if(!download($uri, $try++)); } print "Failed to fetch $uri.\n"; return undef; } else { return ($response{'whisker'}->{'data'}, $response{'whisker'}->{'data'}); } }