#!/usr/bin/perl -w
use strict;
use LWP::Simple;
use SOAP::Lite;

# podajemy tutaj dane swojego klucza do API google.com.
my $google_key  = "tutaj Twj klucz API Google";
my $google_wdsl = "GoogleSearch.wsdl";
my $gsrch       = SOAP::Lite->service("file:$google_wdsl");

# Pobieramy dane od "przyjaci" witryny Fark.
my $fark = get("http://www.fark.com/") or die $!;
$fark =~ m!Friends:</td></tr>(.*?)<tr><td class=\"lmhead\">Fun Games:!migs; 
my $farklinks = $1; # tutaj s wszystkie powizania.

# teraz ptla po poszczeglnych pozycjach.
while ($farklinks =~ m!href="(.*?)"!gism) {
   my $farkurl = $1; next unless $farkurl;
   my @checklist; # adresy URL do sprawdzenia.
   print "\n\nSprwadzam $farkurl.\n";

   # pobranie penej liczby wynikw dla danego URL.
   my $count = $gsrch->doGoogleSearch($google_key, $farkurl,
                        0, 1, "false", "",  "false", "", "", "");
   my $firstresult = $count->{estimatedTotalResultsCount};
   print "Znaleziono $firstresult wynikw.\n";
   if ($firstresult > 50) { $firstresult = 50; }

   # teraz pobieramy co najwyej 50 wynikw bez ustawienia zabezpiecze,
   # otrzymujc w ten sposb cakowit liczb wynikw.
   my $counter = 0; while ($counter < $firstresult) {

       my $urls = $gsrch->doGoogleSearch($google_key, $farkurl,
                           $counter, 10, "false", "",  "false", "", "", "");

       foreach my $hit (@{$urls->{resultElements}}) {
           push (@checklist, $hit->{URL}); 
       } $counter = $counter +10; 
   }

   # teraz sprawdzamy kady pasujcy adres URL.
   my (@goodurls, @badurls); # zmienne robocze.
   foreach my $urltocheck (@checklist) {
       $urltocheck =~ s/http:\/\///;

       my $firstcheck = $gsrch->doGoogleSearch($google_key, $urltocheck,
                                 0, 1, "true", "",  "true", "", "", "");

       # sprawdzamy wyniki; jeli nie znaleziono, adres jest podejrzany.
       my $firstnumber = $firstcheck->{estimatedTotalResultsCount} || 0;
       if ($firstnumber == 0) { push @badurls, $urltocheck; }
       else { push @goodurls, $urltocheck; }
   }

   # i pokazujemy wyniki.
   my ($goodcount, $badcount) = (scalar(@goodurls), scalar(@badurls));
   print "$goodcount adresw jest OK, podejrzanych jest $badcount.\n";

   # pokazujemy nieprzyzwoite domeny, o ile jest ich niewiele.
   unless ( $badcount >= 10 || $badcount == 0) {
       print "Nieprzyzwoite adresy URL to\n";
       foreach (@badurls) {
          print " http://$_\n"; 
       }
    }

   # i pokamy udzia procentowy.
   my $percent = $goodcount * 2; my $total = $goodcount+$badcount;
   if ($total==50) { print "Ten URL jest czysty w $percent%!"; }

}

