#! /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 '| ' + line.join(' | ') + ' |
'
}
puts '
'
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]
|