さいたま市 / 川口市図書館の蔵書検索 GreaseMonkey for Amazon 公開
さて世の中はゴールデンウィークみたいです。僕は暦通りなのでちょっとしたただの連休です。しかも最近は仕事がめちゃ忙しかったりするので、今回のGWはゆっくり体を休めるモードで名古屋にも帰省しません。
さて本題にはいるのですが僕の奥さんは図書館が大好きです。転勤するたびにいろいろな場所に行くのですが、どこでも図書館をしっかり利用してます。このGW中に何気なく図書館のネット予約システムを使っている姿を見ていたら何とも非効率なことをしていました。
- さいたま市図書館の資料検索で蔵書を検索
- 表示された一覧のタイトルを Amazon で検索して書籍サマリーとか感想をみる
- 興味がでたら予約
これには理由があって図書検索システム側には書籍のタイトルとか著者名とかしかデータが表示されず、どんな本かわからないという仕様のため、Amazon で調べていたわけです。それ GreaseMonkey で!と思ったので早速作って奥さんに使って貰いました。かなり満足頂けたみたいなので一般公開します。
※といっても既存のものを今の Amazon に対応させたモノですが・・・それについては後述。
update 07.07.06 Amazonプライム開始による html 変更に対応。
以下、僕の奥さんと同じく初心者の方々にもわかりやすい説明で行きます。是非ご利用下さい。
これは何をするためのモノ?
Amazon の書籍ページに「さいたま市図書館」の蔵書へのリンクを自動で追加し、図書予約を補助するためのツールです。つまりこうなります。リンクを辿れば簡単に予約できるってわけ。奥さんの都合上、「さいたま市図書館」「川口市図書館」に対応しています。要望があれば順次対応します。
インストール手順
- FireFox 2.0 をインストールします。ダウンロードしてインストール実行。これだけ。
- Firefox を起動してアドレスバーに http://www.greasespot.net/ と入力する
- Grease Monkey をインストール。Download Greasemonkey ****(バージョンナンバー) と書かれた所をクリックすると、「あなたのコンピュータを〜設定になっています」ってのが表示されると思います。「設定変更」をクリックして下さい。
- こんな画面が表示されると思いますので、「許可」→「閉じる」として下さい。
- もう一度 Download Greasemonkey ****(バージョンナンバー) と書かれた所をクリックしてください。こんな画面が表示されたら「今すぐインストール」を実行して下さい。後は自動で Firefox が再起動されるはずです。
- さいたま市図書館検索 Greasemonkey をインストールする ←ここをクリック!
上記リンクをクリックするとこんな画面が表示されるはずです。インストール」をクリックして下さい。
- 川口市図書館検索 Greasemonkey をインストールする ←ここをクリック!
- 目黒区図書館検索 Greasemonkey をインストールする ←ここをクリック!
- 板橋区図書館検索 Greasemonkey をインストールする ←ここをクリック!
さて、これで作業は完了です。FireFox を使って、Amazon へ行って書籍ページをご覧下さい。初めに説明画像をつけたように表示されていると思います。Internet Explorer を使っても表示されないのでご注意下さい。
以下開発者向けというか geek な方々への情報
ちょっと前の記事なのですが、「404 Blog Not Found:http://www.amazon.co.jp/ の「二枚舌」に学ぶ究極のSEO」なんてのが報告されていました。HEAD -S http://www.amazon.co.jp/dp/4004310636 HEAD http://www.amazon.co.jp/dp/4004310636 --> 301 MovedPermanently HEAD http://www.amazon.co.jp/%E6%95%B0%E3%81%AB%E5%BC%B7%E3%81%8F%E3%81%AA%E3%82%8B-%E7%95%91%E6%9D%91-%E6%B4%8B%E5%A4%AA%E9%83%8E/dp/4004310636 --> 200 OK
SEO のために URI を書籍名を正規化(uri-escapeしてあるだけだけど)した形にするという技についての説明があるわけですが、 Amazon.co.jp 内の内部リンクをよく見ると、同様の処理が施してあります。つまり内部リンクはほぼ全て商品名を正規化した形の URI にすることで SEO を強化してあるのです。
で何が言いたいかというと、既存のもので私立や県立の図書館と連携する Grease Monkey は存在してましたが、旧式の SEO 対策前の URI 体系のものに対応したものしか見つからず、今の Amazon の URI 体系では旨く動作しませんでした。(あまり深追いして探してませんが・・・)
ってわけで、既存のスクリプトを流用して動作するように作り替えたスクリプトを公開。といった訳です。Grease Money 初めて使ったので初心者的な書き方になっていると思いますけど、まぁそれはいいか。便利なツールは公開することに意味があると言うことで。
他の図書システムとの連携に改変するためには、
1. 以下の定義を書き換える。
libsearch( 'http://www2.lib.city.saitama.jp/STCLIB/servlet/search.result?code_genre1=2&code_value1=', 'さいたま市図書館' );
初めの引数は図書館検索システムの検索 URL です。最後に検索ワードを引き渡すような形に書き換えます。連携しようとする図書館検索システムの引数を解析してつくります。二つめの引数は Grease Monkey で動的に表示するメッセージです。「さいたま市図書館」「川口市図書館」みたいな文字を HTML エンティティ化した形で設定します。HTMLエンティティ生成というソフトを使うのが便利です。
2. 検索結果解析部分を変更する
onload : function( response ) { makelink( api, title, isbn, header, response.responseText.match(/detail_list/i) ); }
正規表現を使って図書館検索システムをたたいて返ってきた html から検索結果を判定しています。match 部分を適宜書き換えて検索がヒットしたかヒットしなかったかの判定になるようにしてください。
以上でだいたいの図書館システムに対応できるかと思います。XPath とか使えばもっと高速なスクリプトになるかと思いますが、考えるのが面倒なので取りあえずこんな感じで。
コメントやシェアをお願いします!
gusson49
図書館の検索結果の取得って、ヘッダーやクエリー習得に苦労するですよね。
ところで、
図書館ページでアマゾン本表紙/レビューを表示するGMスクリプトはどう思います。
「この商品を買った人は…」がついて便利ですよ。
ぜひ意見があれば忌憚なくどうぞ!
kaku
同じくトラックバック失敗でしたので、コメントさせて頂きます。
こちらのスクリプトの改変の上、公開させて頂いております。
電算担当者
初めまして、トラックバック上手く送れなかったのでコメントします。
こちらの記事とスクリプトを参考にさせてもらいグリモンを作りました。
とりあえずお礼でした。ありがとうございました。