#!/usr/local/bin/perl
#----------------------------------------------------------------------------------
# rakuten itemsearch sample
#----------------------------------------------------------------------------------
use LWP::Simple;
use XML::Simple;
use CGI;
use Encode qw/from_to/;
$q = new CGI;
my $keyword = $q->param('keyword');
#----------------------------------------------------------------------------------
$cginame="./itemsearch.cgi";
$TITLE = "楽天商品検索APIサンプル";
# 楽天ウェブサービス
my $base_url = "http://api.rakuten.co.jp/rws/1.7/rest";
my $developerId = '7998c49bf287e10a22bb44f3b3a3b0b2';
my $operation = 'ItemSearch';
my $affiliateId = '055e513c.82654366.055e513d.27abd89d';
my $version = '2007-04-11';
my $hits = 30;
if(!$keyword){
$keyword = '肉';
}
my $req_url = "$base_url?developerId=$developerId&operation=$operation&affiliateId=$affiliateId&version=$version&hits=$hits&keyword=$keyword";
#----------------------------------------------------------------------------------
#get xml
my $response = get($req_url);
my $xmlsimple = XML::Simple->new();
my $xml = $xmlsimple->XMLin($response, ForceArray=>['Item']);
my $out='';
#総検索数
my $totalresult = $xml->{Body}->{'itemSearch:ItemSearch'}->{count};
#何件目から
my $firstResultPosition = $xml->{Body}{'itemSearch:ItemSearch'}{first};
#何件目まで
my $last_ResultPosition = $xml->{Body}{'itemSearch:ItemSearch'}{last};
#ページ
my $cur_page = $xml->{Body}{'itemSearch:ItemSearch'}{page};
#1度に返却する商品数
my $cur_hits = $xml->{Body}{'itemSearch:ItemSearch'}{hits};
my $result = "検索結果 : $totalresult 件中 $firstResultPosition - $last_ResultPosition 件
\n";
$out .=<<"EOF";
商品コード 商品名 |
商品価格 | EOF #商品説明文 | $out .=<<"EOF";商品URL / アフィリエイトURL |
商品画像有無フラグ | 商品画像 64x64URL 商品画像 128x128URL |
販売可能フラグ | 消費税フラグ | 送料フラグ | クレジットカード利用可能フラグ | ショップオブザイヤーフラグ | アフィリエイト利用利率 | 店舗名 レビュー件数 レビュー平均 タイムセール 販売開始時刻 販売終了時刻 店舗コード ジャンルID |
EOF
foreach my $result (@{$xml->{Body}{'itemSearch:ItemSearch'}{Items}{Item}}) {
$result_count++;
my $itemName = $result->{itemName};
my $itemCode = $result->{itemCode};
my $itemPrice = $result->{itemPrice};
my $itemCaption = $result->{itemCaption};
my $itemUrl = $result->{itemUrl};
my $affiliateUrl = $result->{affiliateUrl};
my $imageFlag = $result->{imageFlag};
my $smallImageUrl = $result->{smallImageUrl};
my $mediumImageUrl = $result->{mediumImageUrl};
my $availability = $result->{availability};
my $taxFlag = $result->{taxFlag};
my $postageFlag = $result->{postageFlag};
my $creditCardFlag = $result->{creditCardFlag};
my $shopOfTheYearFlag = $result->{shopOfTheYearFlag};
my $affiliateRate = $result->{affiliateRate};
my $startTime = (ref $result->{startTime}) ? '' : $result->{startTime};
my $endTime = (ref $result->{endTime}) ? '' : $result->{endTime};
my $reviewCount = $result->{reviewCount};
my $reviewAverage = $result->{reviewAverage};
my $shopName = $result->{shopName};
my $shopCode = $result->{shopCode};
my $shopUrl = $result->{shopUrl};
my $genreId = $result->{genreId};
#utf8フラグ外し
utf8::encode($itemName );
utf8::encode($itemCode );
utf8::encode($itemPrice );
utf8::encode($itemCaption );
utf8::encode($itemUrl );
utf8::encode($affiliateUrl );
utf8::encode($imageFlag );
utf8::encode($smallImageUrl );
utf8::encode($mediumImageUrl );
utf8::encode($availability );
utf8::encode($taxFlag );
utf8::encode($postageFlag );
utf8::encode($creditCardFlag );
utf8::encode($shopOfTheYearFlag );
utf8::encode($affiliateRate );
utf8::encode($startTime );
utf8::encode($endTime );
utf8::encode($reviewCount );
utf8::encode($reviewAverage );
utf8::encode($shopName );
utf8::encode($shopCode );
utf8::encode($shopUrl );
utf8::encode($genreId );
$out .=<<"EOF";
---|---|---|---|---|---|---|---|---|---|---|---|
$itemCode $itemName |
$itemPrice | EOF #$itemCaption | $out .=<<"EOF";商品URL / アフィURL |
$imageFlag | $availability | $taxFlag | $postageFlag$creditCardFlag | $shopOfTheYearFlag | $affiliateRate | $shopName $reviewCount $reviewAverage $startTime ~ $endTime $shopCode $genreId |