空想犬猫記

※当日記では、犬も猫も空想も扱っておりません。(旧・エト記)

7行プログラミング(2)

調子に乗ってもう1つ作ってみた。次は簡易辞書スクリプト。検索サイトを勝手にWebサービスみたいに利用してしまうもの。

#!/usr/bin/ruby
require "socket";require "kconv";s=TCPSocket.open("dictionary.goo.ne.jp",80)
s.print"GET /search.php/?MT=#{ARGV[0]}&kind=ej&mode=0&base=1&row=0 HTTP/1.0?r"?
"?n?r?n";g="";while l=s.gets;g << l;end;g=Kconv.toutf8(g);m=g.split("?n");b=0
print"#{ARGV[0]}?n";m.each do|l|;if 1==b;t=l.gsub(/<br>/,"?n");t.gsub!(/<.+?>/?
,"");t.gsub!(/&?w+?;/,"");if/<?/div>/=~l;break;end;print"#{t}";next;end;if?
/<div style=?"line?-height:1?.4em;margin:14px;?">/=~l;b=1;end;end

TCPSocketを使ってgoo辞書サーバの80番ポートを直接叩き,HTMLを取得。さらに取得したHTMLをパースして訳語の部分だけを抽出する。最後にMacOSXのTerminalに合わせてUTF8に文字コードを変換して出力する。外部モジュールをrequireしているので半分インチキだが,まあ標準モジュールなのでその辺は…(ごにょごにょ)
使い方は単語を引数にして起動するだけ。例えば以下の通り。

[yoda]~/tmp> ./7goo.rb nerd
nerd
━━ n. 〔米俗〕 無能な[気のきかない]人, 変り者.

7行プログラミング,結構イケる。