NAME

WebService::KakakuCom - Handle WebAPI of kakaku.com.

SYNOPSIS

use WebService::KakakuCom;

my $api = WebService::KakakuCom->new;

my @results = $api->search('VAIO');
print $_->ProductName, "\n" for @results;

$api->debug(1);
$api->ie('utf8'); # for icode of Jcode
my $rs = $api->search(
    'VAIO',
    { CategoryGroup => 'Pc', SortOrder => 'daterank', PageNum => 2 }
);
for (@$rs) {
    print $_->ProductID;
    print $_->ProductName;
    print $_->CategoryName;
    print $_->MakerName;
    print $_->ImageUrl;
    print $_->ItemPageUrl;
    print $_->BbsPageUrl;
    print $_->ReviewPageUrl;
    print $_->LowestPrice;
    print $_->NumOfBbs;
    print $_->ReviewRating;
}

my $pager = $rs->pager; # Data::Page
print $pager->total_entries;
print $pager->entries_on_this_page;
...

my $product = $api->product($ProductID);
print $product->ProductID, "\n";
...

DESCRIPTION

This module allows you to handle WebAPI of kakaku.com easily.

Kakaku.com (http://kakaku.com/) is a price comparison sites in Japan. You can search/retrieve arbitrary product informations via its own WebAPI. Please refer to http://apiblog.kakaku.com/ for details. (in Japanese)

FUNCTIONS

new()

Returns an instance of this module. You must create an instance before searching.

ua()

Returns an User-Agent instance for customizing an User-Agent string, timeout values, something like that.

search($keyword, \%options)

Returns search results as a result set. The result set contains WebService::KakakuCom::Product objects and it will be available as an array in list context or as a WebService::KakakuCom::ResultSet object in scalar context.

my $api = WebService::KakakuCom->new;
my @results = $api->search('Vaio');
my $rs = $api->search('Vaio');

A ResultSet object can also be used as an array and it has some special methods like pager().

for my $product (@$rs) {
   ...
}
my $pager = $rs->pager;  # an instance of Data::Page

All the informations you want can be retrieve from Product objects in a result set.

for my $product (@results) {
    print $_->ProductID;
    print $_->ProductName;
    print $_->CategoryName;
    print $_->MakerName;
    print $_->LowestPrice;
    print $_->NumOfBbs;
    print $_->ReviewRating;

    # These values are wrapped in URI.
    print $_->ImageUrl
    print $_->ItemPageUrl;
    print $_->BbsPageUrl;
    print $_->ReviewPageUrl;
}

You can specify options of search query like PageNum / SortOrder to the second argument of this method as hash reference. See the official API documents about detail of those options.

my $rs = $api->search(
    'Vaio',
    { PageNum => 1, SortOrder => 'popularityrank' }
);

product($ProductID)

Returns an object of product by ProductID. An retrieved object is a WebService::KakakuCom::Product same as used in search().

ie($icode)

In the API of kakaku.com, a character set of multi byte characters must be Shift-JIS. So this module convert querie's charcter set to Shift-JIS by using Jcode internally.

If there is no information about an input code, it will be guessed automatically but may be failed. It's better that you set your character set of queries with this method.

$icode can be any encoding name that Encode understands.

debug($bool)

Turn on/off the debug switch. Currently it only dump the data contained in a result set.

WARNING

This module is in beta version. Object interface it provides may be changed later.

AUTHOR

Naoya Ito, <naoya at bloghackers.net>

SEE ALSO

  • http://apiblog.kakaku.com/KakakuItemSearchV1.0.html

  • http://apiblog.kakaku.com/KakakuItemInfoV1.0.html

COPYRIGHT & LICENSE

Copyright 2006 Naoya Ito, all rights reserved.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.