Top Level Namespace
Defined Under Namespace
Modules: Lita
Instance Method Summary collapse
Instance Method Details
#disambiguate(term) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/lita/handlers/wikipedia.rb', line 4 def disambiguate(term) url = "http://en.wikipedia.org/w/api.php?action=query&prop=extracts|info|links|pageprops&format=json&exintro=&explaintext=&inprop=url&ppprop=disambiguation&titles=#{term}&redirects=" result = JSON.parse(open(URI.parse(URI.encode(url.strip))).read) page = result['query']['pages'].first[1] if not page.has_key? 'extract' return ["No Wikipedia entry found for '#{term}'.", nil] end extract = page['extract'].split("\n").first if page.fetch('pageprops', {}).has_key? 'disambiguation' links = page['links'].map { |x| x['title'] if not x['title'].downcase.include? 'disambiguation'} links = links.select {|x| x != nil} return disambiguate(links.sample) end url = page['fullurl'] [extract, url] end |