#!/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"; 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"; EOF # $out .=<<"EOF"; EOF } $out .=<<"EOF";
商品コード
商品名
商品価格商品説明文商品URL
/
アフィリエイトURL
商品画像有無フラグ 商品画像 64x64URL
商品画像 128x128URL
販売可能フラグ 消費税フラグ 送料フラグ クレジットカード利用可能フラグ ショップオブザイヤーフラグ アフィリエイト利用利率 店舗名
レビュー件数
レビュー平均
タイムセール
販売開始時刻
販売終了時刻
店舗コード
ジャンルID
$itemCode
$itemName
$itemPrice$itemCaption商品URL
/
アフィURL
$imageFlag

$availability $taxFlag $postageFlag$creditCardFlag $shopOfTheYearFlag $affiliateRate $shopName
$reviewCount
$reviewAverage
$startTime

$endTime
$shopCode
$genreId
EOF print <<"EOF"; Content-Type: text/html $query - $TITLE 楽天商品検索APIサンプル
キーワード:

$result $out EOF