2011-02-20
google翻訳を利用した英和-和英辞書コンソールコマンド
コマンドライン上で簡易的に英単語を調べるのに使います。
ソースコードの変数名で悩んだときとかに使いたくて作りました。
hpricotをgemでインストールすれば使えると思います。
ただし、ruby1.9だと英和が出来ません。なんかhpricotにおけるutf8の処理に問題があるようです(TODO:あとで調べる)。
【使い方とか】
$ rvm list
rvm rubies
ruby-1.8.7-p330 [ x86_64 ]
ruby-1.9.2-p136 [ x86_64 ]
$ rvm 1.8.7
$ ruby translator.rb こんにちわ
Hello
$ ruby translator.rb hello
こんにちは
$ rvm 1.9.2
$ ruby translator.rb こんにちわ
Hello
$ ruby translator.rb hello
/Users/hoge/.rvm/gems/ruby-1.9.2-p136/gems/hpricot-0.8.3/lib/hpricot/builder.rb:9:in `gsub': invalid byte sequence in UTF-8 (ArgumentError)
from /Users/hoge/.rvm/gems/ruby-1.9.2-p136/gems/hpricot-0.8.3/lib/hpricot/builder.rb:9:in `uxs'
from /Users/hoge/.rvm/gems/ruby-1.9.2-p136/gems/hpricot-0.8.3/lib/hpricot/tag.rb:139:in `to_s'
from /Users/hoge/.rvm/gems/ruby-1.9.2-p136/gems/hpricot-0.8.3/lib/hpricot/traverse.rb:160:in `block in inner_text'
from /Users/hoge/.rvm/gems/ruby-1.9.2-p136/gems/hpricot-0.8.3/lib/hpricot/traverse.rb:160:in `map'
from /Users/hoge/.rvm/gems/ruby-1.9.2-p136/gems/hpricot-0.8.3/lib/hpricot/traverse.rb:160:in `inner_text'
from /Users/hoge/.rvm/gems/ruby-1.9.2-p136/gems/hpricot-0.8.3/lib/hpricot/traverse.rb:160:in `block in inner_text'
from /Users/hoge/.rvm/gems/ruby-1.9.2-p136/gems/hpricot-0.8.3/lib/hpricot/traverse.rb:160:in `map'
from /Users/hoge/.rvm/gems/ruby-1.9.2-p136/gems/hpricot-0.8.3/lib/hpricot/traverse.rb:160:in `inner_text'
from /Users/hoge/.rvm/gems/ruby-1.9.2-p136/gems/hpricot-0.8.3/lib/hpricot/elements.rb:108:in `block in inner_text'
from /Users/hoge/.rvm/gems/ruby-1.9.2-p136/gems/hpricot-0.8.3/lib/hpricot/elements.rb:108:in `map'
from /Users/hoge/.rvm/gems/ruby-1.9.2-p136/gems/hpricot-0.8.3/lib/hpricot/elements.rb:108:in `inner_text'
from translator.rb:40:in `block in <main>'
from /Users/hoge/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/net/http.rb:627:in `start'
from /Users/hoge/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/net/http.rb:490:in `start'
from translator.rb:36:in `<main>'
【translator.rb】
#!/usr/bin/env ruby #-*- encoding: utf-8 -*- # ruby v1.9 #$KCODE = 'u' # ruby v1.8 require 'rubygems' require 'hpricot' require 'net/http' require 'kconv' if ARGV.length == 0 print "\nUsage : \n" print "#{$0} \"query sentense (Japanese or English)\"\n\n" exit end if ARGV.length>1 print "\nError : \n" print "too many queries\n\n" exit end if ARGV[0] =~ /^[ -~。-゚]*$/ # english query = "langpair=en|ja&text=#{ARGV[0]}" else # japanese query = "langpair=ja|en&text=#{Kconv.kconv(ARGV[0], Kconv::UTF8)}" end Net::HTTP.version_1_2 #proxy_class = Net::HTTP::Proxy( 'proxy.hoge.com', 10080 ) #http = proxy_class.new( 'translate.google.com', 80 ) #http.start { |http| Net::HTTP.start( 'translate.google.com', 80 ) { |http| response = http.post('/translate_t', query) puts Hpricot(response.body).search("#result_box").inner_text.toutf8 }
【参考にさせて頂きました。(というかただの組み合わせ・・・)】
トラックバック - http://d.hatena.ne.jp/gentoopenguin83/20110220/1298182197
リンク元
- 5 http://www.google.co.jp/search?hl=ja&qscrl=1&q=rumix+_nya&aq=f&aqi=&aql=&oq=
- 2 http://www.google.co.jp/search?hl=ja&lr=lang_ja&tbs=lr:lang_1ja&q=js Three+写真&aq=f&aqi=&aql=&oq=
- 2 http://www.google.co.jp/search?q=チャット ruby websocket&um=1&ie=UTF-8&tbo=u&tbs=blg:1&source=og&sa=N&hl=ja&tab=wb&prmdo=1
- 2 http://www.google.co.jp/search?q=Rails+3+runner&num=100&hl=ja&safe=off&biw=1071&bih=713&prmd=ivnsb&lr=lang_ja&sa=X&ei=fWFnTc7fC4eMvQOC7Yj3DA&ved=0CBsQuAE
- 1 http://b.hatena.ne.jp/hiro14aki/iPhone/
- 1 http://d.hatena.ne.jp/keyword/gvim
- 1 http://d.hatena.ne.jp/teruish/20110220/p1
- 1 http://k.hatena.ne.jp/keywordblog/JS?date=20110206
- 1 http://k.hatena.ne.jp/keywordblog/Ruby
- 1 http://k.hatena.ne.jp/keywordblog/vim?next=3679631811459022283