rubyでWWW::Babelfishっぽいものを作ってみる
Debianのsoap4rのサンプルにbabelfish.rbというのがあったので使ってみた
hoge$ ruby /usr/share/doc/soap4r/examples/sample/soap/babelfish.rb "bonjour monde " hoge$ ruby /usr/share/doc/soap4r/examples/sample/soap/babelfish.rb "hello" "bonjour " hoge$ ruby /usr/share/doc/soap4r/examples/sample/soap/babelfish.rb "hello" "en_es" "hola " hoge$ ruby /usr/share/doc/soap4r/examples/sample/soap/babelfish.rb "hello" "en_ja" /usr/lib/ruby/1.8/xsd/xmlparser/xmlparser.rb:31:in `parse': not well-formed (invalid token) (XMLParserError) from /usr/lib/ruby/1.8/xsd/xmlparser/xmlparser.rb:31:in `do_parse' from /usr/lib/ruby/1.8/soap/parser.rb:92:in `parse' from /usr/lib/ruby/1.8/soap/processor.rb:39:in `unmarshal' from /usr/lib/ruby/1.8/soap/rpc/proxy.rb:236:in `unmarshal' from /usr/lib/ruby/1.8/soap/rpc/proxy.rb:175:in `route' from /usr/lib/ruby/1.8/soap/rpc/proxy.rb:141:in `call' from /usr/lib/ruby/1.8/soap/rpc/driver.rb:178:in `call' from /usr/lib/ruby/1.8/soap/rpc/driver.rb:232:in `BabelFish' from /usr/share/doc/soap4r/examples/sample/soap/babelfish.rb:16
しばし悩んだが、どうしていいのかわからなかったので
perlのWWW::Babelfishを参考にしようとのぞくと、たしかにWWWなかんじだった
中をのぞくとgoogleがパースが楽そうなんでgoogleで
rubyにしてみようとする
#!/usr/bin/ruby require 'net/http' require 'kconv' Net::HTTP.version_1_2 $KCODE='UTF8' str = ARGV.shift || "hello" lang= ARGV.shift || "en|ja" a = Net::HTTP.start('translate.google.com', 80) b = a.post('/translate_t',"text="+str+"&langpair="+lang+"&hl=en&ie=UTF8&oe=UTF8") c = b.body.to_s.toutf8 d = c.scan(/textarea [^>]*>([^<]*?)<\/textarea>/) p d[0].to_s.toutf8
日本語の変換やらで悩んだが、とりあえずでてきた。
hoge$ ruby translate.rb "こんにちは " hoge$ ruby translate.rb "I like beer" "私はビールを好む " hoge$ ruby translate.rb "I like beer" "en|es" "Tengo gusto de la cerveza "
ふーむ。なんか冗長なかんじなんだが、、、
あとは、yahooとかbabelfishか
rubyのHTML parserってなんかいいのあるんだろうか、、、