From 97e878c5147eae633d27c5a90977d3013da8c741 Mon Sep 17 00:00:00 2001 From: rangi Date: Sat, 6 Mar 2004 07:55:35 +0000 Subject: [PATCH] Bugfix, now it actually does whats its supposed to. --- misc/amazonratings/get_ratings.pl | 97 +++++++++++++++++++++------------------ 1 file changed, 52 insertions(+), 45 deletions(-) diff --git a/misc/amazonratings/get_ratings.pl b/misc/amazonratings/get_ratings.pl index d1ab9b2cc3..0f249ad649 100755 --- a/misc/amazonratings/get_ratings.pl +++ b/misc/amazonratings/get_ratings.pl @@ -12,52 +12,59 @@ use HTTP::Cookies; use LWP::UserAgent; use C4::Context; -my $url="http://www.amazon.com/exec/obidos/search-handle-url/index%3Dbooks%26field-isbn%3D"; +my $dbh = C4::Context->dbh(); -my $dbh=C4::Context->dbh(); - -my $query="SELECT isbn,biblioitemnumber,biblionumber FROM biblioitems"; -my $sth=$dbh->prepare($query); +my $query = +"SELECT isbn,biblioitemnumber,biblionumber FROM biblioitems where isbn is NOT NULL and isbn <> '' + group by isbn"; +my $sth = $dbh->prepare($query); $sth->execute(); -while (my $data=$sth->fetchrow_hashref()){ - $data->{'isbn'}=~ s/\-//g; - $data->{'isbn'}=~ s/ +//g; - -# append isbn -# isbn must appear without spaces or - - -$url.=$data->{'isbn'}; -my $ua = LWP::UserAgent->new; -my $content = $ua->get($url)->content; -#print $content; - - -my $rating; - -if ($content=~ /alt="(.*?) out of 5 stars"/){ - $rating=$1; - - } -if ($rating){ - # first check we dont already have a rating, if so, and its different update it - # otherwise insert a new rating - my $query2="SELECT * FROM ratings WHERE biblioitemnumber=?"; - my $sth2=$dbh->prepare($query2); - $sth2->execute($data->{'biblioitemnumber'}); - if (my $ratings=$sth2->fetchrow_hashref()){ - if ($rating ne $ratings->{'rating'}){ - my $query3="UPDATE ratings SET rating=? WHERE biblioitemnumber=?"; - my $sth3=$dbh->prepare($query3); - $sth3->execute($rating,$data->{'biblioitemnumber'}); - $sth3->finish(); - } - } - else { - my $query3="INSERT INTO ratings (rating,biblioitemnumber,biblionumber) VALUES (?,?,?)"; - my $sth3=$dbh->prepare($query3); - $sth3->execute($rating,$data->{'biblioitemnumber'},$data->{'biblionumber'}); - $sth3->finish(); - } - $sth2->finish(); +while ( my $data = $sth->fetchrow_hashref() ) { + $data->{'isbn'} =~ s/\-//g; + $data->{'isbn'} =~ s/ +//g; + + # append isbn + # isbn must appear without spaces or - + my $url = "http://www.amazon.com/exec/obidos/search-handle-url/index%3Dbooks%26field-isbn%3D"; + $url .= $data->{'isbn'}; + my $ua = LWP::UserAgent->new; + my $content = $ua->get($url)->content; + + #print $content; + + my $rating; + + if ( $content =~ /alt="(.*?) out of 5 stars"/ ) { + $rating = $1; + } + if ($rating) { + + # first check we dont already have a rating, if so, and its different update it + # otherwise insert a new rating + my $query2 = "SELECT * FROM ratings WHERE biblioitemnumber=?"; + my $sth2 = $dbh->prepare($query2); + $sth2->execute( $data->{'biblioitemnumber'} ); + if ( my $ratings = $sth2->fetchrow_hashref() ) { + if ( $rating ne $ratings->{'rating'} ) { + my $query3 = + "UPDATE ratings SET rating=? WHERE biblioitemnumber=?"; + my $sth3 = $dbh->prepare($query3); + $sth3->execute( $rating, $data->{'biblioitemnumber'} ); + $sth3->finish(); + } + } + else { + my $query3 = +"INSERT INTO ratings (rating,biblioitemnumber,biblionumber) VALUES (?,?,?)"; + my $sth3 = $dbh->prepare($query3); + $sth3->execute( + $rating, $data->{'biblioitemnumber'}, + $data->{'biblionumber'} + ); + $sth3->finish(); + } + $sth2->finish(); + } +} -- 2.11.0