amazon link作成plugin
pyblosxomのplugin registry を見ていたら amazon link作成plugin があった。
amazon.com用のリンクを作成するスクリプトだったので、 amazon.co.jp用にリンクを変更したのと、ちょっとだけ動作を修正してみた ( wbgamazonjp.py )。
2005/12/30 追記
amazonロゴファイルを見つけたので、ロゴ表示するようにちょっと修正しました。
こんな風に書くと、
AMAZON::4274066304::Joel on Software (← 本当は「:」は半角の「:」)
こんな感じに表示される。
|
Joel on Software |
動作を変更した部分は、以下。
def amazon(line):
! if not line.startswith("AMAZON"):
return line
! line = line.split("::")
! arg1 = line[1]
! arg2 = line[2]
!
----
+ import re
+
+ rc = re.compile('AMAZON::([0-9a-zA-Z]*)::([^<>]*)')
+
def amazon(line):
! result = rc.search(line)
! if not result:
return line
! arg1 = result.group(1)
! arg2 = result.group(2)
reStructuredText形式で書いているからかもしれないけど、HTMLにフォーマット変換 された後のデータが渡ってくるのでamazon()の引数lineに入ってるデータには 行頭と行末に <p></p> が入っていてstartswithでは引っ掛けられなかった ので、正規表現でISBN番号とタイトルを取得するようにしてみた。
***************
*** 71,74 ****
entry = args["entry"]
body = entry["body"]
! entry["body"] = "\n".join([amazon(m) for m in body.splitlines()])
--- 84,88 ----
entry = args["entry"]
body = entry["body"]
! if body.find('AMAZON::') != -1:
! entry["body"] = "\n".join([amazon(m) for m in body.splitlines()])
最初に、素のwbgamazon.pyを試してみたときに、画面が表示されるまでに随分時間が掛 かってた。なんでかなーと思ってコードを見てたらどうやらここが原因みたいだった。
これ、表示対象の全エントリ一行一行に対して先ほどのamazon()関数を呼び出して、行 頭に「AMAZON」って入ってるかどうかをチェックしてる処理だ。そりゃあ時間掛かるし 無駄な処理だよな、ってことであるエントリに「AMAZON」って入ってるかどうかを確認 してなければわざわざ各行を調べることもないでしょ、っていう処理を追加した。単に エントリに「AMAZON」が入ってるかどうかだけだとたまたまアマゾンの話題に触れただ けでも引っかかっちゃうので「AMAZON::」が含まれるかどうかをチェックするようにし てみた。

