#! /usr/local/bin/ruby #オンラインで書誌情報とか在庫情報とか(reviewとか) #ISBN基準で #各書店データデコードとかまあ結構適当なんだけどあくまでサンプルとして #2003.1.20-2003.2.2 require "kconv" require "cgi" #lib = '../ruby' lib = '../bookcache' require "#{lib}/simpleuri" require "#{lib}/webagent" require "#{lib}/cache" require "#{lib}/amazon" require "#{lib}/bk1" require "#{lib}/esbooks" require "#{lib}/asahiya" require "#{lib}/jbook" require "#{lib}/kinokuniya" require "#{lib}/skysoft" require "#{lib}/rcom" require "#{lib}/yahoo" require "#{lib}/webcat" cgi = CGI::new shopnames = ['amz', 'bk1', 'esb', 'ash', 'jbk', 'kin', 'sky', 'rcm', 'yho', 'wct'] list = [] shopnames.each{ |shop| list << shop if cgi.has_key?(shop) } flag_alisato = true if cgi.has_key?('alisato') isbn = cgi['isbn'].first dumerr = DummyError.new() puts < online shop search result

オンラインで書誌情報とか在庫情報とか(reviewとか)

ISBN:#{isbn}

まあ結構適当なんだけどあくまでサンプルとして

EOS list.each{ |shop| bookinfo = nil case shop when 'amz' bookinfo = CacheBib_amazon.new() bookinfo.cache_dir = ("../bookcache/amz") shopname = 'amazon' when 'bk1' bookinfo = CacheBib_bk1.new() bookinfo.cache_dir = ("../bookcache/bk1") shopname = 'bk1' when 'esb' bookinfo = CacheBib_esbooks.new() bookinfo.cache_dir = ("../bookcache/esb") shopname = 'esbooks' when 'ash' bookinfo = CacheBib_asahiya.new() bookinfo.cache_dir = ("../bookcache/ash") shopname = '旭屋' when 'jbk' bookinfo = CacheBib_jbook.new() bookinfo.cache_dir = ("../bookcache/jbk") shopname = 'jbook' when 'kin' bookinfo = CacheBib_kinokuniya.new() bookinfo.cache_dir = ("../bookcache/kin") shopname = '紀伊国屋' when 'sky' bookinfo = CacheBib_skysoft.new() bookinfo.cache_dir = ("../bookcache/sky") shopname = 'skysoft' when 'rcm' bookinfo = CacheBib_rcom.new() bookinfo.cache_dir = ("../bookcache/rcm") shopname = '読書共同体(今FTのみ)' when 'yho' bookinfo = CacheBib_yahoo.new() bookinfo.cache_dir = ("../bookcache/yho") shopname = 'yahoo' when 'wct' bookinfo = CacheBib_webcat.new() bookinfo.cache_dir = ("../bookcache/wct") shopname = 'webcat' else #error puts '知らん書店名が混じってる。やめ。' puts '' exit end bookinfo.expire = 10 #cache更新時間設定 bookinfo.flag_read = false #cacheの読込設定 bookinfo.flag_save = false #cacheの書込設定 #つまり、この2つをfalseにすると、単なるネット情報解析。普段は無設定でよしのはず # bookinfo.flag_net = false #download設定 #つまり、これをfalseにするとlocal駆動cache処理のみ、になるはず bookinfo.stderr = dumerr #出力矯正。$stderrにごちゃごちゃメッセージ出るの抑制してます info = bookinfo.get_data(isbn) table = [] table << ['' + shopname + '', bookinfo.url_site] url = bookinfo.url_isbnsearch if defined?(bookinfo.url_isbnsearch) url = bookinfo.url_bibinfo if defined?(bookinfo.url_bibinfo) table << ['(info)', url] info.keys.sort.each{ |key| table << [key, info[key]] if !info[key].nil? } puts '

' puts '' table.each{ |line| line[1] = '' + line[1] + '' if line[1].to_s =~ %r|^http://|s puts '' } puts '
' + line.join('') + '
' if flag_alisato puts '
' # puts "#{info['author']}『#{info['title']}』<\/b>" puts "■[]#{info['author']}『#{info['title']}』
" puts "#{info['author']}『#{info['title']}』(#{info['series']},#{info['pubdate']},#{info['price']}+税, ISBN#{isbn})
" puts '' puts '[購入ガイド]' codestr, code = '', isbn codestr, code = 'bibid', info['bibid'] if shop == 'bk1' codestr, code = 'productcd', info['product_cd'] if shop == 'esb' codestr, code = 'nipcd', info['nip_cd'] if shop == 'kin' codestr, code = 'detailid', info['detail_id'] if shop == 'yho' puts " ISBN#{isbn} (ISBN#{isbn}) (#{codestr}=#{code})
" # puts "ISBN#{isbn}
(ISBN:#{isbn})
【 #{shop}(#{code})(#{url})】
" puts '
' end puts '

' } puts < 一歩(mail,BBS) | Ruby / XREA | [top] EOS