2004-01-29 (木) [長年日記]
_ 続・続・mt-bk1.pl
昨日のプラグインは mt-bk1.pl をそのまま移植することを考えて作ったのですが、ただただしさんから『amazon.rb とメソッド名を同じにすると乗り換えがしやすい』というツッコミをいただいたので、amazon.rb のメソッドをリプレースするプラグインを作成しました。
# bk1.rb require 'net/http' require 'uconv' def getbk1( bibid ) aid = @conf['bk1.aid'] || '99mt-bk1' h = Hash.new cache = "#{@cache_path}/bk1" Dir::mkdir( cache ) unless File::directory?( cache ) begin item = File::readlines( "#{cache}/#{bibid}" ) raise if item.length < 2 item.each do |line| key, value = line.split( /\t/, 2 ) h[ key ] = value.strip end rescue host = 'cgi.bk1.jp' port = 80 path = "/xml.cgi?bibid=#{bibid}&aid=#{aid}" Net::HTTP.version_1_1 Net::HTTP.start( host.untaint, port.untaint ) do |http| response, = http.get( path ) buf = Uconv.u8toeuc( response.body ) buf.scan( /<([A-Z][A-Za-z]*)>([^<]*)<\/\1>/ ) do |tag| h[ tag[0] ] = tag[1] end if /<Details url="(.*?)">/ =~ buf then h['DetailURL'] = $1.gsub( /%26/, '&' ) end end open("#{cache}/#{bibid}","w") do |f| h.each do |key, value| f.print "#{key}\t#{value}\n" end end end h['AID'] = aid return h end def bk1( bibid ) h = getbk1( bibid ) basketImage = 'http://www.bk1.co.jp/images/bk1/ic-kago.gif' basketURL = "http://www.bk1.co.jp/cgi-bin/bk1bskt.cgi?aid=#{h['AID']}&b=#{h['BIBID'] || bibid}&n=1" basket = %Q[<a href="#{basketURL}"><img src="#{basketImage}" border=0 vspace=1></a>] <<-HTML <span class="bk1"> <a href="#{h['DetailURL']}"> <img class="bk1" src="#{h['ImageUrlSmall']}" align="left" hspace=5 border=0> <strong>#{h['ProductName']}</strong> </a><br /> #{h['Authors']}<br /> #{h['Manufacturer']} / #{h['OurPrice']} / #{h['DateOfIssue']}<br /> #{basket} </span> HTML end
# bk1-amazon.rb alias getAmazonImg_original getAmazonImg def getAmazonImg( position, asin, comment ) return getAmazonImg_original( position, asin, comment ) unless /^[0-9-]{9,12}[\d|Xx]$/ =~ asin h = getbk1( asin ) if @conf['amazon.imgsize'] == 0 then image_url = h['ImageUrlLarge'] || 'http://www.bk1.co.jp/images/bk1/no_img_144.gif' else image_url = h['ImageUrlSmall'] || 'http://www.bk1.co.jp/images/bk1/no_img_90.gif' end product_name = comment || h['ProductName'] r = "" r << %Q[<a href="#{h['DetailURL']}">] unless /no_img/ =~ image_url && @conf['amazon.nodefault'] then r << %Q[<img class="#{position}" src="#{image_url}" alt="#{product_name}">] end if !@conf['amazon.hidename'] || @conf['amazon.nodefault'] then r << product_name if position == "amazon" end r << %Q[</a>] end
bk1.rb と bk1-amazon.rb の2つのファイルがあります。amazon.rb のリプレースを行わない場合は bk1.rb のみを、行う場合は bk1.rb と bk1-amazon.rb の両方を入れてください。 また、この場合は amazon.rb も必要になります。
なお、昨日の bk1.rb が既に入っている場合は昨日のものを捨ててください。ただし、bk1.rb の機能自体は昨日のものとまったく変わっていませんので、昨日と同様 bk1 メソッドを呼び出すことにより、mt-bk1.pl 準拠の表示が可能です。
bk1-amazon.rb を入れた場合は、amazon.rb の以下のメソッドが bk1 へのリンクにリプレースされます。また、表示形式はできるだけ互換性を持たせてあります。
amazon isbn_image isbn_image_right isbn_image_left
ただし、パラメータに ISBN ではなく ASIN を渡した場合は、従来どおり Amazon へのリンクになります。
_ 中小企業、「MSに依存し過ぎ」を懸念
この記事は海外でのものですが、日本ではもっと『依存しすぎ』に対する危機意識が低いように思います。Microsoft に限らず、Adobe・Oracle・Intel ・Cisco などに依存してしまっている企業は多いのではないでしょうか。
_ そう言われても・・・
isbn_image はすでに広く使われている名前なので、今さら挙動を変えるわけにはいかないと思います。
ですので、amazon_bk1 などの、ほかの名前にするというのはどうでしょう?
_ 今日のアニメ
- 東京ミュウミュウ#35
- ざくろに憧れる少女が両親からもらったペンダントが狙われる。
- キン肉マン#67
- キン肉マンがワニ地獄を選び、悪魔騎士・スニゲーターと戦う。
- シティーハンター2#39
- 海坊主が傭兵時代の知り合いである美樹と結婚を賭ける。
- ココロ図書館#12
- ココロ図書館は街の人々に求められている。にこにこりん♪
- ダーティペアFALSH2#3
- トラコンを名乗る詐欺師を報奨金目当てで連行しようとする。
- 陽あたり良好#25/26
- 克彦からの手紙で余計にかすみが勇作のことを意識するように。
- 瓶詰妖精#4
- 10月:秋といえば芸術・スポーツ・食欲/11月:花が枯れるとは?
- ゆめりあ#4
- モネとねねこが智和をプールに連れて行きたいと言い出す。
http://d.tnh.jp/20040129.html<br>睡眠してません2<br><br>こう、<br> isbn_image ISBN<br>と指定すると<br> 画像 タイトル amazonへのリンク bk1へのリンク<br>といった感じになるいうのはどうか?