或阿呆のブログ

Pythonを好んで使っているプログラマです。Ruby,Perl,PowerShell,VBAなどでもたまに書いています。最近はスロット放浪記やってます。。

Perlで楽天アフィリエイト:楽天商品ランキングAPIを使って見た。

ちょっと昔にPerl楽天ウェブサービスAPIを使ってランキング検索をしていたときのソースコードを見つけたので公開します。ご自由にお使い下さい。あまり共通化とか考えなかったので、改造とか流用が大変そう・・・。自分はPythonで書き直そうかと思っています。

use strict;
use warnings;
use XML::Simple;
use LWP::Simple;
use Encode;
use URI;
use Data::Dumper;

foreach(@array){ItemRanking_from_genreId($_);}

sub ItemRanking_from_genreId {
    my $param        = shift(@_);
    my $DEVELOPER_ID = "(あなたのDEVELOPER_ID)";
    my $AFFILIATE_ID = "(あなたのAFFILIATE_ID)";
    my $API_BASE_URL = "http://api.rakuten.co.jp/rws/3.0/rest";
    my $uri = URI->new($API_BASE_URL);
    my $maxPrice = 1000000;

    my $minPrice = 0;

   
    $uri->query_form(
        developerId => $DEVELOPER_ID,
        affiliateId => $AFFILIATE_ID,
        operation   => "ItemSearch",
        version     => "2010-09-15",
        genreId     => $param,
        hits        => "10",
        page        => "1",
        sort        => "standard",
        maxPrice    => $maxPrice,
        maxPrice    => $minPrice,
        imageFlag   => 1,
    );

    my $response    = get($uri);
    my $xml         = new XML::Simple;
    my $rakuten_xml = $xml->XMLin($response);

    foreach my $result (
        @{ $rakuten_xml->{Body}->{'itemSearch:ItemSearch'}->{Items} ->{Item}} )
    {
        $i++;
        $result->{itemName}    = Encode::encode( "shiftjis", $result->{itemName} );
        $result->{itemCaption} = Encode::encode( "shiftjis", $result->{itemCaption} );
        $result->{shopName}    = Encode::encode( "shiftjis", $result->{shopName} );

print << "END_OF_HTML";
<h3>$result->{itemName}</h3>
<a href="$result->{affiliateUrl}"><img src="$result->{mediumImageUrl}" alt="$result->{itemName}" />
↑楽天市場で商品詳細を見る場合は、ご購入する場合は、画像をクリックすると、商品詳細ページに飛びます。</a>
【商品  価格】<span style="color:#FF0000">$result->{itemPrice}</span>円
【ショップ名】<a href="$result->{shopUrl}">$result->{shopName}</a>


END_OF_HTML
    }

}

sub CurrentGenreSearch {
    my $param        = shift(@_);
    my $DEVELOPER_ID = "(あなたのDEVELOPER_ID)";
    my $AFFILIATE_ID = "(あなたのAFFILIATE_ID)";
    my $API_BASE_URL = "http://api.rakuten.co.jp/rws/3.0/rest";
    my $uri = URI->new($API_BASE_URL);

    $uri->query_form(
        developerId => $DEVELOPER_ID,
        affiliateId => $AFFILIATE_ID,
        operation   => "GenreSearch",
        version     => "2007-04-11",
        genreId     => $param,
    );

    my $response    = get($uri);
    my $xml         = new XML::Simple;
    my $rakuten_xml = $xml->XMLin($response);
    
    return $rakuten_xml->{Body}->{'genreSearch:GenreSearch'}->{current}->{genreName};

}

sub ParentGenreSearch {
    my $param        = shift(@_);
   my $DEVELOPER_ID = "(あなたのDEVELOPER_ID)";
    my $AFFILIATE_ID = "(あなたのAFFILIATE_ID)";
    my $API_BASE_URL = "http://api.rakuten.co.jp/rws/3.0/rest";
    my $uri = URI->new($API_BASE_URL);

    $uri->query_form(
        developerId => $DEVELOPER_ID,
        affiliateId => $AFFILIATE_ID,
        operation   => "GenreSearch",
        version     => "2007-04-11",
        genreId     => $param,
    );

    my $response    = get($uri);
    my $xml         = new XML::Simple;
    my $rakuten_xml = $xml->XMLin($response);
    
    return $rakuten_xml->{Body}->{'genreSearch:GenreSearch'}->{parent}->{genreName};