#!/usr/bin/perl -w
# get_advice.pl
#
# Skrypt pobierajcy z Amazon porady dla kupujcych
# Uycie: perl get_advice.pl <asin>
use strict; use LWP::Simple;

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

# Zestaw URL do przekazanego ASIN.
my $url = "http://amazon.com/o/tg/detail/-/$asin/?vi=advice";

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

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

# Pobranie pasujcych danych.
my ($inAddition) = (join '', $content) 
    =~ m!in addition to(.*?)(instead of)?</td></tr>!mis;
my ($instead)    = (join '', $content) 
    =~ m!recommendations instead of(.*?)</table>!mis;

# Szukanie porady "in addition to".
if ($inAddition) { print "-- In Addition To --\n\n";
   while ($inAddition =~ m!<td width=10>(.*?)</td>\n<td width=90%>.*?ASIN/
(.*?)/.*?">(.*?)</a>.*?</td>.*?<td width=10% align=center>(.*?)</td>!mgis) {
       my ($place,$thisAsin,$title,$number) = ($1||'',$2||'',$3||'',$4||'');
       $title =~ s/($unescape_re)/$unescape{$1}/migs; # cytowanie HTML 
       print "$place $title ($thisAsin)\n(Recommendations: $number)\n\n";
   }
}

# Szukanie porady "instead of".
if ($instead) { print "-- Instead Of --\n\n";
    while ($instead =~ m!<td width=10>(.*?)</td>\n<td width=90%>.*?ASIN/(.
*?)/.*?">(.*?)</a>.*?</td>.*?<td width=10% align=center>(.*?)</td>!mgis) {
        my ($place,$thisAsin,$title,$number) 
          = ($1||'',$2||'',$3||'',$4||'');
        $title =~ s/($unescape_re)/$unescape{$1}/migs; #unescape HTML 
        print "$place $title ($thisAsin)\n(Rekomendacji: $number)\n\n";
    }
}

