#!/usr/bin/perl -w
# get_reviews.pl
#
# Skrypt pobierajcy z Amazon recenzje
# i zapisujcy je w pliku.
# Uycie: perl get_reviews.pl <asin>
use strict;
use LWP::Simple;

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

# Skadanie adresu URL wg przekazanego ASIN.
my $url = "http://amazon.com/o/tg/detail/-/$asin/?vi=customer-reviews";

# Ustawienie podmiany kodu HTML; dziaa szybciej od URI::Escape.
my %unescape = ('&quot;'=>'"', '&amp;'=>'&', '&nbsp;'=>' ');
my $unescape_re = join '|' => keys %unescape;

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

# Ptla po HTML podczas poszukiwania wzorca
while ($content =~ m!<img.*?stars-(\d)-0.gif.*?>.*?<b>(.*?)</b>, (.*?)\n.*?Reviewer:\n<b>\n(.*?)</b>.*?</table>\n(.*?)<br>\n<br>!mgis) {

    my($rating,$title,$date,$reviewer,$review) = 
                      ($1||'',$2||'',$3||'',$4||'',$5||'');
    $reviewer =~ s!<.+?>!!g;   # odrzucenie wszystkich znacznikw HTML 
    $reviewer =~ s!\(.+?\)!!g; # usunicie wszystkiego z nawiasw
    $reviewer =~ s!\n!!g;      # usunicie znakw nowego wiersza
    $review =~ s!<.+?>!!g;     # usunicie wszystkich znacznikw HTML 
    $review =~ s/($unescape_re)/$unescape{$1}/migs; # odwrcenie cytowania.

    # Prezentacja wynikw
    print "$title\n" . "$date\n" . "od: $reviewer\n" .
          "$rating gwiazdek.\n\n" . "$review\n\n";

}

