2007年10月14日

MovableType用amazon REST plugin(改)

ちょうど去年の今頃に作成したMovableType用amazon REST pluginを改造した。

半年ほど前にやったのはAmazonのRestレスポンス変更に対応するための小変更だったけど、今回はもう少しまともに変更。

追加した機能は、
・Restで取得したオブジェクトをきちんとログに残す(^^;。
 ログはこちら→log
・取得したオブジェクトをperlのDB_Fileを使ってBerkeleyDBにキャッシュとして格納する。
 キャッシュしたDBはこちらのディレクトリ→cache/
・取得した日時をDBに格納し、表示にも【データ取得日】として明示する。
・同じくMediumサイズの商品イメージデータをキャッシュとして格納する。
 キャッシュした画像こちらのディレクトリ→image/
 #サイズが0のイメージデータの場合は、Amazonに登録されていないことを示します。
・キャッシュに格納されたデータ(DB)がある場合には、Amazonへのリクエストを出さない。
 #log内に"Cache-hit"の行があるところがそれ。
というところ。

元からある機能は、
・Blog記事中に<MTRest asin="4761263334">と書くだけで、[図1]のように表示してくれる。
・Blog記事中に上記表示がStaticに埋め込まれるので、検索対象になる。
・Amazonにイメージデータが無いまたは気に入らない場合などに、
 <MTRest asin="4761263334" img="http://hoop.euqset.org/archives/cache/image/4761263334-Large.jpg">などとURLを
 指定することで、[図2]のように別のイメージデータをリンクして表示させることができる。
などです。

----------------------------------
[図1]<MTRest asin="4761263334">の出力

[図2]<MTRest asin="4761263334" img="http://hoop.euqset.org/archives/cache/image/4761263334-Large.jpg">の出力

----------------------------------

新しい版はmtrest.pl.20071013と言う名前で置いてますので、mtrest.plとrenameした後に、
<BlogRoot>/blog/plugins/mtrest.plと言う感じで置いてください。

尚、MT用のregex.plprocesstags.plおよびEnclosures.plが前提(だったはず(^^;)です。

ちなみに、なぜこのような改造をしたかというと、
・改造前のバージョンでは、毎回rebuildの度ごとにAmazonへのREST requestを出していたので
 負荷が高い上に、再構築が遅くなっていた。
・Amazonでは、古い商品に関しての情報が突然消えることがある。
・消えてしまうと、再構築の際にページのあちこちに空白が生まれ、
 何に付いて書いていたかわからなくなる。
などのやらしい点があったからです。

現バージョンでは、キャッシュした商品情報はそのまま利用しますが、
商品の画像データに関してはキャッシュしているだけで、Blog記事中からリンクはさせていません。
#キャッシュにリンクするような改造は、それほどめんどくさくは無いと思っています。
#ただし、画像の権利がどうなのかが問題...。


もし、使ってくれる人がいたら、コメントなどどうぞ。
#まぁ、いろいろ良いツールがあるので、いないかなぁ(^^;

投稿者 his : 2007年10月14日 00:21
このエントリーのトラックバックURL: http://hoop.euqset.org/blog/mt-tb2006.cgi/65195
MovableType用amazon REST plugin
概要 何とか動いているようなので、公開。 Blogのエントリ内に <MTRest...
ウェブログ: shibata(hi) shokudou
時刻: 2007年10月14日 01:30
amazon
概要 amazon プロフィール検索 動画検索 画像検索
ウェブログ: いま話題の検索語とは?
時刻: 2007年10月14日 19:52
コメント

Enclosures.plは前提じゃないような気がしてきた(^^;

Posted by: his : 2007年10月14日 01:27
コメントする









名前、アドレスを登録しますか?





画像の中に見える文字を入力してください。