類語検索 (2)

いつぞやの類語検索プログラム。私的には超便利。

$ thesaurus 格言
DOUGI: ことわざ, マキシム, 金言, 座右の銘, 処世訓, 寸言, 名言
KOUGI: 言葉|句, せりふ, 語句, ロ舌
KYOUGI: アフォリズム, エピグラム, キャッチフレ―ズ, スロ―ガン, モット, モッ卜ー, 警句, 寸鉄, 標語, 名句, 名文句, 箴言
KANREN: 諺語, 古諺, 俗諺, 俚諺, 家訓, 戒め, 合言葉, 座右銘, 信条, 人生訓, 至言, ご託, キーワード, スローガン, フレ―ズ, ―語, 花言葉, 慣用句, 仰せ, 禁句, 句, ロ上, 合い言葉, 千言万語, 宣旨, 早ロ言葉, 文句ない, 言葉|語句, ―言, ―言半句, ―ロ, 忌み言葉, 季語, 結語, 言, 言の葉, 言辞, 言質, 言説, 語, 差別語, 詞, 詩語, 辞, 前言, ニ言, 百万言, 文言, 弁, 万言, 類語
HANGI:


パスワード漏らすわけでもないし、正当な HTTP アクセスなので、問題ないような気がしてきたので公開。といいつつホスト名を隠す。

#!/usr/bin/ruby -Ke
require 'net/http'
Net::HTTP.version_1_2
require 'uri'
require 'kconv'
require 'htree'
require 'rexml/document'

if __FILE__ == $0
   word = URI.encode(ARGV.shift.tosjis)

   uri = nil
   cookie = ""
   #proxy = Net::HTTP::Proxy("proxy.xxx.jp", 8080)
   proxy = Net::HTTP
   proxy.start('foo.co.jp', 80) { |http|
      res = http.post('/bar.cgi', "key=#{word}", {
         "Referer" => "http://baz.co.jp/quax/bar.htm"
      })
      cookie = res['set-cookie']
      uri = URI.parse($1) if res.body.toeuc =~ /<meta http-equiv="REFRESH" content="0;URL=(.+?)"/
   }

   if !uri.nil? && !cookie.empty?
      proxy.start(uri.host, uri.port) { |http|
         res = http.get(uri.path + "?" + uri.query, {'cookie' => cookie})
         HTree(res.body.toeuc).to_rexml.elements.each('//select') do |s|
            puts(s.attributes['name'] + ": " +
               s.elements.to_a('option').map{|o| o.text.chomp}.partition{|e| e !~ /[*]+/}[0].join(", ")
            )
         end
      }
   end
end

foo, bar, baz, quax は該当サイトの HTML ソースを見て変換してください。proxyあり/なしらへんをもっと綺麗にできると思うけど放置。