wikipediaを利用した単語の翻訳(日本語->英語)

rubyで単語の翻訳スクリプトを作りました。

作成の経緯

最近、コーディング中に業務用語や技術用語を表す変数名として、英語の単語を使います。
その際に、日本語版wikipediaのページ内の英語版wikipediaへのリンクをたどって、英語名称を調べることが多いです。
そこで、この手順をスクリプトにしてしまえば、ブラウザ操作の手間が減るかなと思い、作成しました。

スクリプトの手順は以下のようになります。

  1. wikipedia日本語ページから対象の単語のページを取得する。
  2. 取得したページ内から、wikipedia英語ページへのリンクを探す。
  3. リンクに含まれている名称を結果とする。

スクリプト

※注:調べる単語がべた書きです(日本語の扱いが不明で、とりあえず放置してます。)

####UTF-8で保存する必要あり###
require 'net/http'
require 'uri'

# 日本語名(引数にしたい・・・)
japanese_name = "為替相場"

Net::HTTP.version_1_2	# おまじないだそうで
FILE_JP = "wiki.tmp"	# 一時ファイル

# Webサーバからページを取得する。
def getPage( address, page, &func )
	Net::HTTP.start( address ) do | http |
		response = http.get( page )
		if ( response.code == '301' ) then
			response['Location'].sub( /^http:\/\/([^\/]*)(\/.*)$/ ) do
				getPage( $1, $2, &func )
			end
		elsif ( response.code == '200' ) then
			yield response.body
		else
			puts "error: response.code = #{response.code}"
			exit( 1 )
		end
	end
end

# Webサーバからページを読み込み、ファイルに書き込む。
File.open( FILE_JP, 'w' ) do | f |
	getPage( 'ja.wikipedia.org', URI.escape( '/wiki/' + japanese_name ) ) do | str |
		f.write str
	end
end


# ページを読み込み、英語名を探す。
english_name = ''
File.open( FILE_JP, 'r' ) do | f |
	f.each do | line |
		line.sub( /<li class="interwiki-en"><a href="http:\/\/en.wikipedia.org\/wiki\/([^"]*)">English<\/a><\/li>/ ) do
			# 英語名
			english_name = $1
		end
	end
end

# 結果表示
puts "#{english_name}"