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

# Wszystkie informacje do Google.
my $google_key  = "Twj klucz API Google";
my $google_wdsl = "GoogleSearch.wsdl";
my $gsrch       = SOAP::Lite->service("file:$google_wdsl");
my $bestsellers = get("http://www.oreilly.com/catalog/top25.html");

# Otrzymujemy list bestsellerw, wic nie musimy pobiera
# numerw  na licie; wystarczy skorzysta z licznika
# i powiksza go przy kadym przejciu do nastpnej ksiki.
my $rank = 1; 
while ($bestsellers =~ m!\[<a href="(.*?)">Read it on Safari!mgis) {
   my $bookurl = $1; $bookurl =~ m!http://safari.oreilly.com/(\w+)!;
   my $oraisbn = $1; next if $oraisbn =~ /^http/;

   # W bibliotece RIT szuka bdziemy numeru ISBN ksiki. Warto
   # zwrci uwag na liczny adres URL umoliwiajcy pobranie danych
   # o ksice.
   my $ritdata = get("http://albert.rit.edu/search/i?SEARCH=$oraisbn"); 
   $ritdata =~ m!field C -->&nbsp;<A HREF=.*?>(.*?)</a>!mgs; 
my $ritloc = $1; # mamy ju numer LOC.

   # A moe by tak pobra jeszcze tytu, co?
   $ritdata =~ m!<STRONG>\n(.*?)</STRONG>!ms; my $booktitle = $1; 

   # Sprawdzamy, czy znaleziono kod LOC dla ksiki. Zdarza si, e
   # go nie ma. Jeli zostanie znaleziony, idziemy dalej.
   if ($ritloc =~ /^Q/ or $ritloc =~ /^Z/) {

      # Pierwsze nasze wyszukiwanie dotyczy caego numeru LOC. 
      my $results = $gsrch ->doGoogleSearch($google_key, "\"$ritloc\"",
                             0, 1, "false", "",  "false", "", "", "");
      my $firstcount = $results->{estimatedTotalResultsCount};

      # Teraz usuwamy dat i szukamy wszystkich wyda.
      $ritloc =~ m!(.*?) 200\d{1}!ms; my $ritlocall = $1; 
      $results = $gsrch ->doGoogleSearch($google_key, "\"$ritlocall\"",
                          0, 1, "false", "",  "false", "", "", "");
      my $secondcount = $results->{estimatedTotalResultsCount};

      # A teraz pokazujemy to, co znalelimy.
      print "Tytu ksiki to $booktitle. \n"; 
      print "Na licie bestsellerw O'Reilly ksika zajmuje miejsce $rank.\n"; 
      print "Numer LOC tej ksiki to $ritloc. \n";
      print "Szukanie numeru $ritloc w Google daje $firstcount wynikw. \n"; 
      print "Szukanie wszystkich wyda ($ritlocall) daje w Google ".
            "$secondcount wynikw.\n \n";  
   } 
   $rank++;
}

