#!/usr/bin/perl-w
#
# Scattersearch -- uycie sugestii innych zapyta z Yahoo!
# do tworzenie serii wyszukiwa w Google. 

use strict;

use LWP;
use SOAP::Lite;
use CGI qw/:standard/;

# pobieramy zapytanie; jeli go brak, koczymy.
my $query = shift @ARGV; die unless $query;

# Miejsce na twj klucz do Google API.
my $google_key = 'tu podaj klucz';

# Pooenie pliku WSDL GoogleSearch.
my $google_wdsl = "./GoogleSearch.wsdl";

# wyszukiwanie zapytania w Yahoo!
my $ua  = LWP::UserAgent->new;
my $url = URI->new('http://search.yahoo.com/search');
$url->query_form(rs => "more", p => $query);
my $yahoosearch = $ua->get($url)->content;
$yahoosearch =~ s/[\f\t\n\r]//isg;

# i sprawdzenie, czy uzyskano jakie wyniki.
$yahoosearch =~ m!Related:(.*?)<spacer!migs; 
die "Niestety, brak jakichkolwiek wynikw!\n" unless $1;
my $recommended = $1;

# teraz dodajemy wszystkie nasze wyniki do tablicy
# przetwarzanej dalej przez Google.
my @googlequeries;
while ($recommended =~ m!<a href=".*?">(.*?)</a>!mgis) {
    my $searchitem = $1; $searchitem =~ s/nobr|<|>|\///g;
    push (@googlequeries, $searchitem); 
}

# poka nagwek strony wynikw.
print join "\n",
start_html("ScatterSearch");
     h1("Your Scattersearch Results"),
     p("Your original search term was '$query'"),
     p("zapytanie dao " . scalar(@googlequeries). " podobnych poj."),
     p("Oto liczby uzyskane przy wyszukiwaniach w Google"),
     CGI::start_ol(  );

# tworzenie obiektu Google do szukania przez API.
my $gsrch = SOAP::Lite->service("file:$google_wdsl");

# uruchamianie zapyta Google.
foreach my $googlesearch (@googlequeries) {
    my $titlesearch = "allintitle:$googlesearch"; 
    my $count = $gsrch->doGoogleSearch($google_key, $titlesearch,
                                       0, 1, "false", "",  "false",
                                       "", "", "");
    my $url = $googlesearch; $url =~ s/ /+/g; $url =~ s/\"/%22/g;
    print li("Znaleziono $count->{estimatedTotalResultsCount} ".
             "wynikw dla zaleconego wyszukiwania <a href=\"http://www.".
             "google.com/search?q=$url&num=100\">$googlesearch</a>");
}

print CGI::end_ol(  ), end_html;

