« ラベル: ?B と del.icio.us | メイン | 『転換期の作法~ポーランド、チェコ、スロヴァキア、ハンガリーの現代美術』 @ MOT »
March 23, 2006
blog とかで今読んでいる本を紹介するツール
趣味の工作ということで、 今読んでる本を blog のサイドバーなどに出すためのツールを作ってみました (今メインのページに出てるはず)。
Amazon のページで本を選び、Bookmarklet で cgi にアクセスして、 プレビューを確認したらポストします。 ポストする際には TypeKey を使って認証します。 TypeKey へのログインが済んでいなければログイン画面が出ますが、 すでにログインされていればそのままポストされます。
ポストされた ASIN が保存されていると、?action=js で呼出した時に 本を表示する javascript を返します。
<script type="text/javascript" src="http://ryoji.sakura.ne.jp/misc/reading/reading.cgi?action=js"/>
こんな感じでサイドバーにでも貼っておきます。 Bookmarklet は プレビュー画面に出ます。最初に使う時 (まあ使う人がいればですが) は ?action=preview としてみて下さい。直接引数なしで起動するとエラーになります(汗)。
ソースコード: reading.pl
もうちょっと詳しい動作説明
Bookmarklet または action=preview で、ASIN を指定するとプレビューができます。 プレビューを確認したら post します。ここで action=post で起動されると、 指定した ASIN を一旦 Cookie に保存しておいてから認証のために TypeKey に リダイレクトされます。認証から返ってきたら (引数なし、っていうか TypeKey 認証のための引数がついてくる)、承認して、Cookie に保存されてる ASIN を 読み出してサーバ側のファイルに保存します。
action=js で呼出したときは、保存されたファイルから ASIN を取得、 表示用の Javascript を吐きだします。
基本的に自分用に作ったので、荒っぽいです。責任は負いかねますしサポートもできませんのでご了承下さい。 まぁ、使ってもらうというより何かの参考にでもなれば、という感じで公開しときます。
必要なモジュールなど
- LWP::Simple
- LWP::UserAgent
- Authen::TypeKey
- XML::Simple
設置
ソースコード中の変数を設定します。
- $typekey_token
- TypeKey Token
- $typekey_name
- 投稿する人の TypeKey のアカウント名
- $afid
- Amazon のアフィリエイトID
- $aws_key
- Amazon Web Service の API Key
- $filename
- ASIN を保存するファイル名。CGI から書き込めなければなりません。
- $htmlid
- 表示の際に div で括るので、その div の id。スタイルの設定に使います。
ソースコードを cgi が実行できる場所に置きます。 ファイル名も必要に応じて .cgi などにして下さい。
引数について
- action=preview - プレビューです。
- action=js - 表示用の javascript 出力
- action=post - 保存です。ここから typekey 認証にうつります。
- なし - TypeKey 認証から帰ってきたら、verify して実際にファイルに保存します。
余談
レビューを書くヒマがあんまりないけど、何読んでるか紹介くらいしたい、 という気持があって、MovableType の plug-in とか調べてみたんですけど、 なんだかテンプレートを書きかえるだのなんだの面倒くさそう。 ちゃんと調べれば自分の要求に合うものがあるのかもしれませんが、 せっかくだから自分で作ってみることに。Bookmarklet 一発で post したい。 利用側は JavaScript とかにしとけば貼りつけるのは楽。というところで 仕様を決めました。あとさすがに post には認証がいるだろうと、だけど 面倒くさいと、TypeKey があるじゃないかと。
ただ TypeKey で認証はいいんですが、_return で返ってきたときには TypeKey 用の引数以外には持たせられないので、それ以外の情報をどっかにとっておかないといけません。 セッションに保存とかちょっと大袈裟だよなー、変なトリック使わなきゃだめかなー、 とか散々迷ったあげく、Cookie に保存することに。ってそれが一番簡単じゃんか。 Cookie 使うの思いつくのにすげー時間かかってしまいました。情けない。
わかりずらい説明ですみません。
投稿者 ryoji : March 23, 2006 12:24 AM
トラックバック
このエントリーのトラックバックURL:
http://ryoji.sakura.ne.jp/mt/mt-tb.cgi/294
コメント
これ凄い便利そう!というのが我が家二人の意見なのですが、こういうことに最高に疎いため、やり方が全く分かりません。。。時間をみてチャレンジしてみます。レビューはなかなか書くことができませんが、読んでいる本を紹介するのはやってみたいですね。小説から学術書まで。
投稿者 コーノ : March 26, 2006 05:48 PM
人に全然やさしくない説明で申し訳ないです…。そのうちなんとかします。
投稿者 ryoji : March 27, 2006 10:57 PM