Introduction

ブログ内検索

  • このサイトの記事を検索 by Google

おすすめの一冊!

無料ブログはココログ

« イベントハンドラのスコープへ | トップページ | クォート付きリストの罠 »

2009-09-21

bk1_to_amazon

オンライン書店 bk1 の書籍ページに Amazon へのリンクを
自動的に埋め込むスクリプト(SleipnirScript&ぐりもん)
を書いてみました。



Seaoak は本を買うとき Amazon ではなくて bk1 を使ってます。
なぜかというと、ココログを始めたときにココログと連携して
いたのが bk1 で、「読んだ本のリスト」とかを作ると自動的に
bk1 へのリンクが生成されるようになっていたからです。
あと、Amazon だと過去に買った本がページ上に表示されてしまう
のがちょっと恥ずかしかった、というのもあります。
# 今はこの機能は OFF にできるのかな?

その bk1 なのですが、品揃えという点では悪くないのですが、
内容紹介とか書評とかがほとんど無いのがちょっと不満。
その点、さすがに Amazon は情報量が多いです。

で、bk1 で面白そうな本を見かけたときに、その本の Amazon のページを
のぞいてみることがあります。そのとき、ISBN をコピペして検索する
わけですが、これがちょっとめんどい。



というわけで、リンクを勝手に追加する SleipnirScript を書いてみました。
ページ内の文字列を取得してリンク要素を追加するだけなので、
イベントハンドラも使わないし、とってもカンタンでした。

唯一調べたのが、ISBN の計算方法。
bk1 のページに載っているのは IBSN13 という13桁のコードなのですが、
Amazon のリンク (URL) に使われているのは ISBN10 という10桁のコード。
基本的には ISBN13 の最初の3桁を削れば ISBN10 になるのですが、
最後の1桁はチェックサム(チェックデジット)なので再計算が必要なのです。
今回は WikiPedia の ISBN の項目を参考してコーディングしました。



で、あまりに単純なスクリプトになってしまったので、せっかくだから
Firefox の GreaseMonkey でも動くようにしてみることに。

ちょっと試行錯誤した結果、次のようなことが非互換性がわかりました。
# Sleipnir 2.8.5 と Firefox 3.0.14 です

  1.スクリプトの文字コードが違う。SleipnirScript は Shift-JIS で、
   GreaseMonkey は Unicode (UTF-8N) を期待してるっぽい。
   期待と違う文字コードにすると、スクリプトの説明文が化けたり、
   スクリプト中の日本語との比較(パターンマッチング)に失敗する。

 2.TABLE 要素の子としていきなり TR 要素を並べたとき、TABLE 要素の
   childNodes[] の順番が違う。Sleipnir だと TBODY 要素が先頭要素
   (firstChild) なのに、Firefox だと2番目の要素になってる。

 3.Firefox だとTBODY 要素の childNodes[] にゴミが混じる。
   Sleipnir だと TBODY 要素の childNodes[] はすべて TR 要素。
   Firefox だと childNodes[] の奇数番目の要素だけが TR 要素で、
   偶数番目の要素として Text ノードが勝手に挿入されている。


予想より手間がかかってしまいましたが、とりあえずどちらでも動く
スクリプトにすることができたので、公開します。


    ⇒ bk1_to_amazon.user.js
    最新版は userscripts.org にあります http://userscripts.org/scripts/show/75657

Sleipnir + SeaHorse の方は
     C:\Program Files\Fenrir & Co\Sleipnir\plugins\seahorse\
にコピーして、「Sleipnir オプション」の「拡張機能」の「SeaHorse」
のところで「再読み込み」ボタンを押せば組み込まれます。

Firefox + GreaseMonkey の方は、ダウンロードしたスクリプトを
Firefox のウインドウにドラッグ&ドロップして、開いたダイアログで
「インストール」ボタンを押せば組み込まれます。


バグ報告、ご要望など、お待ちしてます♪

« イベントハンドラのスコープへ | トップページ | クォート付きリストの罠 »