横浜市立図書館のウェブ予約用Proxomitronフィルタ

少し前からだが、横浜市立図書館のウェブサイトで、
・貸し出し状況の参照
・貸し出し延長(次予約者がいないとき1回のみ)
・予約状況の参照
・(そして待望の)予約
が出来るようになった。

しかし、ログインする方式でなく、各ページで機能ごとに図書カード番号とパスワードを入れないといけない。しかも、図書カード番号入力フィールドでは、IME-OFFになっているので、図書カード番号のIME辞書登録も使えない。

これでは面倒なので、ProxomitronのフィルタでHTMLを書き換えて、
・予約時画面の受け取り図書館は固定
・図書カード番号は家族分をプルダウンリストでの選択
・パスワードは固定(家族はすべて同じパスワードにしておく)
になるようにしてみた。

これだけ複雑なフィルタ作成は初めてなので、ドキュメントを探したところ、
http://www.pluto.dti.ne.jp/~tengu/proxomitron/help/Matching_Rules.html
に日本語のわかりやすいドキュメントがあった。これを参考に作ってみたので公開する。もっとスマートな書き方があるかもしれないが動いているのでよしとする。

URL: www.lib.city.yokohama.jp/cgi-bin/
Limit: 1000
Match: 
(INPUT TYPE="radio" NAME="tosh" Value="1")\1$SET(#=input name="tosh" type="hidden" value="1")|
(<INPUT TYPE="radio" NAME="tosh" Value="2"*</select>)$SET(#=)|
(<INPUT TYPE="radio" NAME="tosh" Value="3"*</select>)$SET(#=)|
(<SELECT NAME="yykn"*</SELECT>)$SET(#=<input name="yykn" type="hidden" value="XX">)|
(<INPUT NAME="ryno"*>)$SET(#=<select name="ryno"><option value="x">
<option value="XXXXXXXXXX">Papa<option value="XXXXXXXXXX">Mama
<option value="XXXXXXXXXX">Musume</select>)|
(TYPE=password)$SET(#=type="hidden" value="XXXXXXXXXX")
Replace: \@

マッチストリング中のXXは図書館番号、XXXXXXXXXX等は自分の状況に合わせて設定する。最寄の図書館番号はフィルタ前のHTMLソースを見て調べて欲しい。

また、パスワード設定・変更画面にも効くので、これらの機能を使うときはフィルタをオフにする必要がある。

なお、これは2005-10-28現在のウェブサイトの仕様に基づいているのでウェブページが変更されたら修正が必要なのはもちろんである。

追記:2005-12-11
いつのまにかフォーマットが変わっていたので改訂した。上記は2005-12-11時点の仕様にもとづいたもの。