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記事中からリンクはさせていません。
��キャッシュにリンクするような改造は、それほどめんどくさくは無いと思っています。
��ただし、画像の権利がどうなのかが問題...。
もし、使ってくれる人がいたら、コメントなどどうぞ。
��まぁ、いろいろ良いツールがあるので、いないかなぁ(^^;

1 件のコメント:

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

    返信削除