#!/usr/bin/perl-w
# review_monitor.pl
#
# Monitoruje produkty wysyajc e-mail, kiedy dodawana jest nowa opinia.
# Uycie: perl review_monitor.pl <asin>
use strict;
use LWP::Simple;
use XML::Simple;

# Klucz programowego dostpu do Amazon.
my $dev_token='tutaj wstaw klucz';

# Opcjonalny kod wsppracy z Amazon.
# Zobacz: http://associates.amazon.com/.
my $af_code='tutaj wstaw kod';

# Pooenie programu sendmail i adres email.
my $sendmailpath = "tutaj wstaw pooenie sendmail";
my $emailAddress = "tutaj wstaw swj adres e-mail";

# Z wiersza polece pobierz ASIN.
my $asin = shift @ARGV or die "Uycie: perl review_monitor.pl <asin>\n";

# Pobierz liczb opinii dodanych od ostatniego uruchomienia tego skryptu.
open (ReviewCountDB, "<reviewCount_$asin.db");
my $lastReviewCount = <ReviewCountDB> || 0;
close(ReviewCountDB); # bdy?! ba!

# Zestawiamy zapytanie w formie URL (RESTian).
my $url = "http://xml.amazon.com/onca/xml2?t=$af_code" . 
          "&dev-t=$dev_token&type=heavy&f=xml" .
          "&AsinSearch=$asin";

# Pobieramy tre...
my $content = get($url);
die "Niemoliwe pobranie $url" unless $content;

# Analiza za pomoc XML::Simple.
my $response = XMLin($content);

# Wysanie listu e-mail, jeli dodano jak opini.
my $currentReviewCount = $response->{Details}->{Reviews}->
{TotalCustomerReviews};
my $productName        = $response->{Details}->{ProductName};
if ($currentReviewCount > $lastReviewCount) {
    open (MAIL, "|$sendmailpath -t") || die "Nie mona tworzy programu pocztowego!\n";
    print MAIL "To: $emailAddress\n";
    print MAIL "From: Monitor opinii na Amazon\n";
    print MAIL "Subject: Dodano opini!\n\n";
    print MAIL "Liczba opinii dla $productName to $currentReviewCount.\n";
    close (MAIL);

    # Zapis aktualnego licznika opinii do pliku.
    open(ReviewCountDB, ">reviewCount_$asin.db");
    print ReviewCountDB $currentReviewCount;
    close(ReviewCountDB);
}

