Amazon Cross Book Checkは便利です

これまで私fuji70は,大田区図書館,千代田区図書館の蔵書判定スクリプトを作って公開していました.

商品ページだけでなく検索結果のリストなどにも判定結果を載せるようにしようと思っていました.リスト形式のページに対応させるのは,メディアマーカーに蔵書判定結果をつける実装と同様に行うつもりでした.

そろそろリスト対応の実装をしようかなと思っていたら,もっと素晴らしいスクリプトを見つけました.

Amazon Cross Book Checkスクリプト

id:adda さんが作成したAmazon Cross Book CheckというGreaseMonkeyスクリプトが便利です.

BookOffOnlineなどの中古本サイトから価格情報を引っ張って来れます.さらに対応するサイトを増やす仕組み(共有データベース)も導入しています.素晴らしい!
私が使いたい大田区図書館と千代田区図書館については,id:turing_pattern さんがデータベースにアップしてくれています.

おしい! もう一歩

千代田区図書館についてはこのままだと実際は蔵書があるのに出てこない場合があります.
例えば,以下の2つを比較すると

私作成のスクリプトでは両方とも『蔵書あり』ですが,Amazon Cross Book CheckだとISBN13のほうは『Not Found』になると思います.
理由としては,以下にあげる通りです.

千代田区立図書館は本によって、ISBN10とISBN13のいずれかでないと検索されないようです。

図書館の蔵書判定スクリプトを再度公開します - fuji70の日記

私はISBN10,ISBN13の両方に対応して蔵書判定を行うようにしました。

じゃあ,Amazon Cross Book Checkも対応させてみよう

ISBN10とISBN13のOR検索を導入すれば大丈夫です.
Amazon Cross Book CheckをISBN10,ISBN13両方対応するようにちょっといじってみました.

var SITEINFO = [
    {
	label: '\u5343\u4EE3\u7530\u533A\u7ACB\u56F3\u66F8\u9928', //千代田区図書館
	url: 'http://www.library.chiyoda.tokyo.jp/wo/opc/srh_do?lang=all&sort_item=title&sort_seq=asc&lines=20&req_max=1000&stype=adv&otype=local&dlang=jpn&isbn=',
	regxp: /hit-text/,
	bothISBN: true // <---- 両方使用 fuji70  2008.12.7
    },

を先頭部分に追加し,208行目付近のbuildURL関数内に1行追加します.

Item.prototype.buildURL = function(info) {
	var url = (info.isbn13)? info.url + conv2ISBN13(this.isbn) : info.url + this.isbn;
	url = (info.bothISBN)? info.url + conv2ISBN13(this.isbn)  + "|" + this.isbn : url; // <---- 両方使用 fuji70  2008.12.7
	if (info.afterISBN) url += info.afterISBN;
	return url;
}

これで,先の2冊とも『Found』になります.


はっきり言って,Amazon Cross Book Checkはちょー便利です.ソースも綺麗な構造をしているので,自分のスクリプトを育てるよりもこちらをいじったりして活用していこうかと思ってます.開発者の id:adda さんには感謝ですね.