Net::Amazonだと簡単

ActivePerl + Net::Amazon モジュールでサンプルプログラムを作ってみました。

use strict;
use Net::Amazon;
use encoding "cp932";

my $amazon = Net::Amazon->new(
	token => '自分のSubscription ID',
	locale => 'jp',
);

my $asin = ['4101327181'];
my $res = $amazon->search(asin => $asin);

unless ($res->is_success()) {
	print $res->message(), "\n";
	exit;
}

foreach my $item ($res->properties) {
	print "Asin: ", $item->Asin, "\n";
	print "ProductName: ", $item->ProductName, "\n";
	print "Availability: ", $item->Availability, "\n";
	print "Catalog: ", $item->Catalog, "\n";
	print "Authors: ", join(', ', $item->authors), "\n" if $item->can('authors');
	print "ReleaseDate: ", $item->ReleaseDate, "\n";
	print "Manufacturer: ", $item->Manufacturer, "\n";
	print "ImageUrlMedium: ", $item->ImageUrlMedium, "\n";
	print "OurPrice: ", $item->OurPrice, "\n";
	print "Media: ", $item->Media, "\n";
	my $review = $item->review_set;
	if ($review->total_reviews) {
		print "\n";
		print "AverageCustomerRating: ", $review->average_customer_rating, "\n";
		foreach my $rev ($review->reviews) {
			print "Rating: ", $rev->rating, "\n";
			print "Summary: ", $rev->summary, "\n";
			print "Comment: ", $rev->comment, "\n";
		}
	}
	print "\n";
}

DelphiからSOAPで情報を取得するのも簡単だったのですが、それ以上に簡単です。

難点はNet::AmazonのインストールがppmではできなくてCPANモジュールを使わないといけないところ。ActivePerlでCPANモジュールを使うためにはあらかじめnmakeを入れておかないといけないんですよね。

日時の挿入

ひとりWikiに対する要望でPukiwikiの&now;が使えると良いというものがあります。これはデータを保存するときにそのときの日時に変換して保存するという機能で、将来Pukiwikiの書式に対応するときに対応しようかと思っていましたが、もっと手っ取り早い方法があったので対応しました。

&now;と書けるようになるわけではなくて、エディタの機能に日時を挿入する機能を追加するという単純な対応。メモ帳でF5を押したときのような感じの機能です。エディタが自前なのでこのあたりの自由度は高いですね。いずれは内部リンクの挿入機能も追加したいと思っています。