イースト辞書Webサービス
リンク
「イースト辞書Webサービス」
http://www.btonic.com/ws/
サンプルページ
http://sakura-computer.co.jp/webservice/netdic/net...
ソースコード
#!/usr/local/bin/ruby # # $Id$ # イースト辞書WEBサービスAPIサンプル # 指定されたキーワードでまず検索メソッドを呼び出し、その結果のIDを使用して内容取得メソッドを呼び出し、辞書の内容を取得する。 # Auther:Yasuo Tabira(ytabira at gmail.com) require 'cgi' require 'erb' require 'open-uri' require 'pp' require 'rexml/document' SEARCHDICITEMLITE_URL = 'http://btonic.est.co.jp/NetDic/NetDicV09.asmx/SearchDicItemLite' GETDICITEMLITE_URL = 'http://btonic.est.co.jp/NetDic/NetDicV09.asmx/GetDicItemLite' class Hash def to_query() query = [] self.each do |key,value| query << "#{key}=#{ERB::Util.u(value.to_s)}" end query.join("&") end end begin idcgi = CGI.new # とりあえずヘッダは出力しておく。 print idcgi.header ####################################### # 検索メソッド idquery = idcgi.params idquery['Dic'] = "EJdict" if idquery['Dic'].to_s == "" idquery['Word'] = "test" if idquery['Word'].to_s == "" idquery['Scope'] = "HEADWORD" if idquery['Scope'].to_s == "" idquery['Match'] = "STARTWITH" if idquery['Match'].to_s == "" idquery['Merge'] = "AND" if idquery['Merge'].to_s == "" idquery['Prof'] = "XHTML" idquery['PageSize'] = 1 idquery['PageIndex'] = 0 iduri = "#{SEARCHDICITEMLITE_URL}?#{idquery.to_query}" idresult = nil #$DEBUGはデバッグモード(-d)のときのみtrueとなる変数 puts '<pre>' + iduri + '</pre>' if $DEBUG open(iduri) do |f| obj = REXML::Document.new(f.read) idresult = obj.root end ####################################### # 内容取得メソッド cgi = CGI.new query = cgi.params query['Dic'] = idquery['Dic'] if idresult.elements['TitleList/DicItemTitle/ItemID'] != nil then query['Item'] = idresult.elements['TitleList/DicItemTitle/ItemID'].text else query['Item'] = "" end if idresult.elements['TitleList/DicItemTitle/LocID'] != nil query['Loc'] = idresult.elements['TitleList/DicItemTitle/LocID'].text else query['Loc'] = "" end query['Prof'] = "XHTML" uri = "#{GETDICITEMLITE_URL}?#{query.to_query}" puts '<pre>' + uri + '</pre>' if $DEBUG result = nil open(uri) do |f| obj = REXML::Document.new(f.read) result = obj.root end ####################################### # 表示するページの作成 script = <<-"EOF" <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>イースト 辞書Webサービス サンプル</title> </head> <body> 辞書検索サンプル <form action="" method="get"> 辞書の種類: <input type="radio" name="Dic" value="EJdict" checked>EJDict英和辞典</input> <input type="radio" name="Dic" value="EdictJE">Edict和英辞典</input> <input type="radio" name="Dic" value="wpedia" >ウィキペディア日本語版</input><br/> 検索語:<input type="Text" name="Word" value="#{idquery['Word']}"><br/> 検索対象: <input type="radio" name="Scope" value="HEADWORD" checked>見出し語</input> <input type="radio" name="Scope" value="ANYWHERE" >全文</input><br/> 一致指定: <input type="radio" name="Match" value="STARTWITH" checked>前方</input> <input type="radio" name="Match" value="ENDWITH">後方</input> <input type="radio" name="Match" value="CONTAIN">部分</input> <input type="radio" name="Match" value="EXACT">完全</input><br/> 複数条件指定時の結合方法指定: <input type="radio" name="Merge" value="AND" checked>AND</input> <input type="radio" name="Merge" value="OR">OR</input><br/> <input type="submit"> </form> <%- if result.elements['ErrorMessage'].text != nil then -%> <font color="red">エラー:<%= result.elements['ErrorMessage'].text %></font> <%- else -%> ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ <%= result.elements['Body/div'].to_s %> ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ <%- end -%> <div style="margin:10pt 0"> <i><a href="<%= iduri %>"><%=iduri%></a></i> <i><a href="<%= iduri %>"><%=uri%></a></i> </div> </body> </html> EOF e = ERB.new(script, nil, '-') e.run(binding) rescue => ex puts '<pre>' + ex + '</pre>' puts '<pre>' pp ex.backtrace puts '</pre>' end
2007年12月03日(月) 01:16:20 Modified by ID:6iEpxHmiZg