めっきり春だし今日からPerlを始めました
いきさつとか理由とかは暇なときに書きます。とりあえず作ったものを晒します。
XML::TreePPでAmazonAPIのXMLをparseして、HTML::TwmplateHTML::Template使ってHTMLで出力する
最近何かと話題のAmazonの商品をいじってみます。
使ったCPANモジュールです
Amazon APIに商品(デモ&ソースでは"EeePC")のASINをキーにリクストして、返ってきたXMLをXML::TreePPで配列に変換します。で、その配列から商品名やサムネイル情報をHTML::Templateを使ってHTMLとして出力します。
今後の予定
これをベースになんだかんだ機能を追加していきたいと思います。
今後のお願い
変なところあったらコメントください。お願いします><
ソースは下記
Perl(20080312.pl)
#!/usr/bin/perl use strict; use CGI; use XML::TreePP; use HTML::Template; my $tpp = XML::TreePP->new(); my $tree = $tpp->parsehttp(GET => "http://webservices.amazon.co.jp/onca/xml?ResponseGroup=Medium&Service=AWSECommerceService&AWSAccessKeyId=/*あなたのAmazonアクセスキー*/Operation=ItemLookup&ItemId=B0011YTFQO"); my $item = $tree->{ItemLookupResponse}->{Items}->{Item}; my $template = HTML::Template->new(filename => '20080312.tmpl'); $template->param(TITLE => $item->{ItemAttributes}->{Title}); $template->param(LINK => "http://www.amazon.co.jp/exec/obidos/ASIN/" . $item->{ASIN} . "/tekiomo-22/ref=nosim/"); $template->param(IMAGE => $item->{MediumImage}->{URL}); $template->param(DESCRIPTION => $item->{EditorialReviews}->{EditorialReview}->{Content}); $template->param(PRICE => $item->{OfferSummary}->{LowestNewPrice}->{FormattedPrice}); print "Content-Type: text/html\n\n", $template->output;
Template(20080312.tmpl)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title><TMPL_VAR NAME=TITLE></title> </head> <body> <h1><a href="<TMPL_VAR NAME=LINK>" title="<TMPL_VAR NAME=TITLE>をAmazonで購入する"><TMPL_VAR NAME=TITLE></a></h1> <a href="<TMPL_VAR NAME=LINK>" title="<TMPL_VAR NAME=TITLE>をAmazonで購入する"><img src="<TMPL_VAR NAME=IMAGE>" alt="<TMPL_VAR NAME=TITLE>" /></a> <dl> <dt>price</dt> <dd><TMPL_VAR NAME=PRICE></dd> <dt>description</dt> <dd><TMPL_VAR NAME=DESCRIPTION></dd> </dl> </body> </html>