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