Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Credits go to mlt
- #!/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'});
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement