#!/usr/bin/perl -w
# ybgoogled.pl
# Pobiera pierwsz pozycj z indeksu Yahoo Buzz, wysya j jako 
# zapytanie do ostatnich trzech dni indeksu Google.
# Uycie: perl ybgoogled.pl
use strict;
use SOAP::Lite;
use LWP::Simple;
use Time::JulianDay;

# Klucz programisty API Google.
my $google_key='tutaj podaj klucz';

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

# Liczba dni wstecz uwzgldnianych w indeksie Google.
my $days_back = 3;

# Pobierz kopi http://buzz.yahoo.com.
my $buzz_content = get("http://buzz.yahoo.com/overall/") 
  or die "Niemoliwe pobranie Yahoo Buzz: $!";

# Znalezienie pierwszej pozycji na indeksie Buzz.
$buzz_content =~ m!<b>1</b>.*?&cs=bz"><b>(.*?)</b></a>&nbsp;</font>!;
my $buzziest = $1; # przypisanie dopasowania jako frazy do szukania.
die "Nie mog znale Yahoo! buzz\n" unless $buzziest;

# Dzisiejsza data wg kalendarza juliaskiego.
my $today = int local_julian_day(time);

# Tworzymy zapytanie Google i korzystamy z niego.
my $query = "\"$buzziest\" daterange:" . ($today - $days_back) . "-$today"; 
print "Pierwsza pozycja w Yahoo Buzz to dzisiaj: $buzziest\n",
      "Szukam w Google frazy: $query\n", "Wyniki:\n\n";

# Tworzenie nowej instancji SOAP::Lite, przekazanie jej GoogleSearch.wsdl.
my $google_search = SOAP::Lite->service("file:$google_wdsl");

# Zapytanie Google.
my $results = $google_search->doGoogleSearch( 
                  $google_key, $query, 0, 10, "false",
                  "",  "false", "", "", ""
              );

# Nie ma adnych wynikw?
die "Nic nie znaleziono" unless @{$results->{resultElements}};

# Ptla po wynikach.
foreach my $result (@{$results->{'resultElements'}}) {
    my $output = join "\n", $result->{title} || "no title",
                 $result->{URL}, $result->{snippet} || 'none',"\n";
    $output =~ s!<.+?>!!g; # odrzucenie wszystkich znacznikw HTML.
    print $output; # no i zadziaao!
}

