続 CrossBookSearch
ひとつのグリモンでいろんなサイト上でいろんな図書館の蔵書チェックをするという試み。何も変わってないけど、スクリーンショットとコードの断片を貼ると興味を持ってくれる人がいるのでは。
青リンクは蔵書ありで貸し出し可能、灰リンクは蔵書ありで貸し出し不可、リンクなしは蔵書なし。選択すれば詳細ページが開かれるのですぐに予約できる。
検索対象を選択できる。ひどすぎるデザイン。もちろん後でなおす。誰かが…。
表示対象サイトは SITEINFO 風に定義する。ISBN さえ引っこ抜ければどこでも大丈夫。
今のところ
を定義している。
2008/01/25 追記
drry さんがいろいろ追加してくれてた!ナイス。
var SITEINFO = [ { url : '^http://www\.amazon\.co\.jp/', xpaths : { isbn10 : 'normalize-space(//li[b/text()="ISBN-10:"]/text())', isbn13 : 'translate(//li[b/text()="ISBN-13:"]/text(), "- ", "")' } }, { url : 'http://www\.oreilly\.co\.jp/books/', xpaths : { isbn10 : 'translate(//meta[string-length(@content)=13 and @name="isbn"]/@content, "-", "")', isbn13 : 'translate(//meta[string-length(@content)=17 and @name="isbn"]/@content, "-", "")' } },
検索先のサイトも同様に。とりあえず 23 区内の一部とブクオフオンライン。
- 渋谷区立図書館
- 品川区立図書館
- 新宿区立図書館
- 中野区立図書館
- 世田谷区立図書館
- 中央区立図書館
- 荒川区立図書館
- 豊島区立図書館
- 練馬区立図書館
- 足立区立図書館
- 板橋区立図書館
- 千代田区立図書館
- ブックオフオンライン
var LIBINFO = { library : { tokyo_east : { name : '図書館−東京23区', targets : { // shibuya: { name: '渋谷', keys: {isbn10h: true}, enc: 'shift-jis', url: 'http://www.lib.city.shibuya.tokyo.jp', context: 'Asp', func: general, args: { reqs: [ { method: 'post', url: 'Book_Kensaku_w.asp?Page=1', content: 'tos=1&tzn=1&zas=1&isbn=' + '$isbn', regexps: { detail: /<A\s*HREF=\s*(syousai_w\.asp\?TosCode=\d+)\s*>/, next: /<A\s*HREF=\s*(syousai_w\.asp\?TosCode=\d+)\s*>/, owned: /<A\s*HREF=\s*syousai_w\.asp\?TosCode=\d+\s*>/, } }, { method: 'get', regexps: { enabled: /<TD>\u3000<\/TD>\s*<TD>.*<\/TD>\s*<\/TR>/ } } ], opts: { overrideMimeType: 'text/html; charset=shift-jis' } } }, // setagaya: { name: '世田谷', keys: {isbn10: true, isbn10h: true, isbn13: true, isbn13h: true}, enc: 'shift-jis', url: 'http://libweb.city.setagaya.tokyo.jp', context: 'clis', func: patternA },
CodeRepos で待っています。